diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-04 14:17:45 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-04 14:18:41 +0900 |
commit | 171a3dff6fcecaa75b6342ea325c2db05121a0fd (patch) | |
tree | 8a7f1a25a0c386b83614987e49b2111f73c7a7d2 /eval.go | |
parent | 50309a696feec7aa1c47a3352bb1b2001ebb70d8 (diff) | |
download | kati-171a3dff6fcecaa75b6342ea325c2db05121a0fd.tar.gz |
Move more logics for MaybeRule from eval.go to parser.go
Diffstat (limited to 'eval.go')
-rw-r--r-- | eval.go | 18 |
1 files changed, 6 insertions, 12 deletions
@@ -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 |