package calculator.interpreter.ast.vars; import calculator.interpreter.Environment; import calculator.interpreter.EvalException; import calculator.interpreter.ast.InfixOp; /** * Execute assignment operator */ public class Assignment extends InfixOp { @Override public Object eval(Environment env) { String name; if (first instanceof Name) { name = ((Name) first).name(); } else { throw new EvalException(first, "Left hand side of assignment must be an identifier"); } Object value = second.eval(env); return env.findDefined(location, name).bind(location, value); } }