Module: Trxl::Additive2

Defined in:
lib/trxl/trxl_grammar.rb

Instance Method Summary collapse

Instance Method Details

#additives(env = Environment.new) ⇒ Object



3137
3138
3139
# File 'lib/trxl/trxl_grammar.rb', line 3137

def additives(env = Environment.new)
  tail.elements.map { |e| [ e.additive_op, e.multitive.eval(env) ] }
end

#eval(env = Environment.new) ⇒ Object



3130
3131
3132
3133
3134
3135
# File 'lib/trxl/trxl_grammar.rb', line 3130

def eval(env = Environment.new)
  # left associative evaluation
  additives(env).inject(multitive.eval(env)) do |result, next_op|
    next_op[0].apply(result, next_op[1])
  end
end