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 {