aboutsummaryrefslogtreecommitdiff
path: root/eval.go
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-04 14:17:45 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-04 14:18:41 +0900
commit171a3dff6fcecaa75b6342ea325c2db05121a0fd (patch)
tree8a7f1a25a0c386b83614987e49b2111f73c7a7d2 /eval.go
parent50309a696feec7aa1c47a3352bb1b2001ebb70d8 (diff)
downloadkati-171a3dff6fcecaa75b6342ea325c2db05121a0fd.tar.gz
Move more logics for MaybeRule from eval.go to parser.go
Diffstat (limited to 'eval.go')
-rw-r--r--eval.go18
1 files changed, 6 insertions, 12 deletions
diff --git a/eval.go b/eval.go
index 9c481df..222c222 100644
--- a/eval.go
+++ b/eval.go
@@ -122,12 +122,6 @@ func (ev *Evaluator) evalMaybeRule(ast *MaybeRuleAST) {
ev.lineno = ast.lineno
expr := ast.expr
- if ast.semicolonIndex >= 0 {
- expr = expr[0:ast.semicolonIndex]
- }
- if ast.equalIndex >= 0 {
- expr = expr[0:ast.equalIndex]
- }
lexpr, _, err := parseExpr(expr, nil)
if err != nil {
panic(fmt.Errorf("parse %s:%d %v", ev.filename, ev.lineno, err))
@@ -135,8 +129,8 @@ func (ev *Evaluator) evalMaybeRule(ast *MaybeRuleAST) {
buf := newBuf()
lexpr.Eval(buf, ev)
line := buf.Bytes()
- if ast.equalIndex >= 0 {
- line = append(line, ast.expr[ast.equalIndex:]...)
+ if ast.term == '=' {
+ line = append(line, ast.afterTerm...)
}
Log("rule? %q=>%q", ast.expr, line)
@@ -161,9 +155,9 @@ func (ev *Evaluator) evalMaybeRule(ast *MaybeRuleAST) {
//Log("RULE: %s=%s (%d commands)", lhs, rhs, len(cmds))
if assign != nil {
- if ast.semicolonIndex >= 0 {
+ if ast.term == ';' {
// TODO(ukai): reuse lexpr above?
- lexpr, _, err := parseExpr([]byte(ast.expr), nil)
+ lexpr, _, err := parseExpr(append(ast.expr, ast.afterTerm...), nil)
if err != nil {
panic(fmt.Errorf("parse %s:%d %v", ev.filename, ev.lineno, err))
}
@@ -184,8 +178,8 @@ func (ev *Evaluator) evalMaybeRule(ast *MaybeRuleAST) {
return
}
- if ast.semicolonIndex > 0 {
- rule.cmds = append(rule.cmds, string(ast.expr[ast.semicolonIndex+1:]))
+ if ast.term == ';' {
+ rule.cmds = append(rule.cmds, string(ast.afterTerm[1:]))
}
Log("rule outputs:%q cmds:%q", rule.outputs, rule.cmds)
ev.lastRule = rule