diff options
Diffstat (limited to 'eval.cc')
-rw-r--r-- | eval.cc | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -87,13 +87,18 @@ void Evaluator::EvalRule(const RuleAST* ast) { if (expr->find_first_not_of(" \t\n;") == string::npos) return; - Rule* rule = new Rule; - rule->loc = loc_; - rule->Parse(*expr); + Rule* rule; + RuleVar rule_var; + ParseRule(loc_, *expr, &rule, &rule_var); + + if (rule) { + LOG("Rule: %s", rule->DebugString().c_str()); + rules_.push_back(rule); + last_rule_ = rule; + return; + } - LOG("Rule: %s", rule->DebugString().c_str()); - rules_.push_back(rule); - last_rule_ = rule; + CHECK(false); } void Evaluator::EvalCommand(const CommandAST* ast) { |