Implement += and ?=
diff --git a/eval.go b/eval.go
index dbff80f..6f092cc 100644
--- a/eval.go
+++ b/eval.go
@@ -120,7 +120,7 @@
ev.lineno = ast.lineno
lhs := ev.evalExpr(ast.lhs)
- rhs := ast.evalRHS(ev)
+ rhs := ast.evalRHS(ev, lhs)
Log("ASSIGN: %s=%s", lhs, rhs)
ev.outVars[lhs] = rhs
}
@@ -165,6 +165,18 @@
}
}
+func (ev *Evaluator) getVar(name string) (string, bool) {
+ value, present := ev.outVars[name]
+ if present {
+ return value, true
+ }
+ value, present = ev.vars[name]
+ if present {
+ return value, true
+ }
+ return "", false
+}
+
func (ev *Evaluator) getVars() map[string]string {
vars := make(map[string]string)
for k, v := range ev.vars {