aboutsummaryrefslogtreecommitdiffstats
path: root/eval.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-19 14:25:17 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-22 15:46:23 +0900
commit9b16bda965b29b6ba5ce3178abf8e4655e5af044 (patch)
tree7f61396a6d8acb6fe01764b69b307e02a04ed539 /eval.cc
parent9d959c38e872b453396bb20a4bff40d62f933fac (diff)
downloadandroid_build_kati-9b16bda965b29b6ba5ce3178abf8e4655e5af044.tar.gz
android_build_kati-9b16bda965b29b6ba5ce3178abf8e4655e5af044.tar.bz2
android_build_kati-9b16bda965b29b6ba5ce3178abf8e4655e5af044.zip
[C++] Parse all kinds of rules
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) {