public object visitAssignExpr(Expr.Assign expr) { var value = evaluate(expr.value); if (locals.ContainsKey(expr)) { environment.assignAt(locals[expr], expr.name, value); } else { globals.assign(expr.name, value); } return(value); }
public void assign(Token name, object value) { if (values.ContainsKey(name.lexeme)) { values[name.lexeme] = value; return; } if (enclosing != null) { enclosing.assign(name, value); return; } throw new RuntimeError(name, $"Undefined variable '{name.lexeme}'."); }