class AST::Assignment attr_reader :name, :value def initialize(name, value) @name = name @value = value end def ==(other) other.is_a?(AST::Assignment) && other.name == @name && other.value == @value end def execute(env) if env.get(@name.name) env.set(@name.name, @value) else raise "Invalid assignment to undeclared variable #{@name.name}" end end end