class AST::Conditional attr_reader :branches def initialize(branches) @branches = branches end def ==(other) other.is_a?(AST::Conditional) && other.branches == @branches end def execute(env) @branches.each do |branch| if branch.condition.execute(env) value = nil branch.block.statements.each do |statement| value = statement.execute(env) end return value end end end end