aboutsummaryrefslogtreecommitdiffstats
path: root/eval.cc
diff options
context:
space:
mode:
Diffstat (limited to 'eval.cc')
-rw-r--r--eval.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/eval.cc b/eval.cc
index 93357b3..16791fa 100644
--- a/eval.cc
+++ b/eval.cc
@@ -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) {