diff options
| author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-17 15:33:11 +0900 |
|---|---|---|
| committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:44 +0900 |
| commit | 7e256dfc39efc5f1614686a85fb5c9da6480abb9 (patch) | |
| tree | eb30790d43ac6081d9332ac0dfe92ce5960082e5 /ast.cc | |
| parent | 32750621508da5e68f53bf14f944ad524627eb50 (diff) | |
| download | platform_build_kati-7e256dfc39efc5f1614686a85fb5c9da6480abb9.tar.gz platform_build_kati-7e256dfc39efc5f1614686a85fb5c9da6480abb9.tar.bz2 platform_build_kati-7e256dfc39efc5f1614686a85fb5c9da6480abb9.zip | |
[C++] Implement ifdef
Diffstat (limited to 'ast.cc')
| -rw-r--r-- | ast.cc | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -41,6 +41,21 @@ string CommandAST::DebugString() const { expr->DebugString().c_str(), LOCF(loc())); } +string IfAST::DebugString() const { + const char* opstr = "???"; + switch (op) { + case CondOp::IFEQ: opstr = "ifeq"; break; + case CondOp::IFNEQ: opstr = "ifneq"; break; + case CondOp::IFDEF: opstr = "ifdef"; break; + case CondOp::IFNDEF: opstr = "ifndef"; break; + } + return StringPrintf("IfAST(op=%s, lhs=%s, rhs=%s loc=%s:%d)", + opstr, + lhs->DebugString().c_str(), + rhs->DebugString().c_str(), + LOCF(loc())); +} + string IncludeAST::DebugString() const { return StringPrintf("IncludeAST(%s, loc=%s:%d)", expr->DebugString().c_str(), LOCF(loc())); @@ -72,6 +87,15 @@ void CommandAST::Eval(Evaluator* ev) const { ev->EvalCommand(this); } +IfAST::~IfAST() { + delete lhs; + delete rhs; +} + +void IfAST::Eval(Evaluator* ev) const { + ev->EvalIf(this); +} + IncludeAST::~IncludeAST() { delete expr; } |
