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);
}
}