229f5896c6
soml was updated to have a typed ast layer to make programatic creation easier this brings LOTS of syntax change with it, that does not really mean anything at all All tests pass again so back to the same
19 lines
779 B
Ruby
19 lines
779 B
Ruby
module Soml
|
|
Compiler.class_eval do
|
|
|
|
def on_OperatorExpression statement
|
|
#puts "operator #{statement.inspect}"
|
|
# operator , left_e , right_e = *statement
|
|
# left and right must be expressions. Expressions return a register when compiled
|
|
left_reg = process(statement.left_expression)
|
|
right_reg = process(statement.right_expression)
|
|
raise "Not register #{left_reg}" unless left_reg.is_a?(Register::RegisterValue)
|
|
raise "Not register #{right_reg}" unless right_reg.is_a?(Register::RegisterValue)
|
|
#puts "left #{left_reg}"
|
|
#puts "right #{right_reg}"
|
|
add_code Register::OperatorInstruction.new(statement,statement.operator,left_reg,right_reg)
|
|
return left_reg # though this has wrong value attached
|
|
end
|
|
end
|
|
end
|