::= '(' + ')' | '[' * ']' def read_list(tokens) list = [:list] tokens.shift # pop our opening paren while tokens.first !~ /(\)|\])/ list << read_form(tokens) end tokens.shift # pop our closing paren list end
class AddNode < Node attr_reader :left_operand, :right_operand def initialize(left_operand, right_operand) super @left_operand = left_operand @right_operand = right_operand end end BOTH ARE NODE OBJECTS