rubyx/lib/slot_language/load_maker.rb

26 lines
771 B
Ruby
Raw Normal View History

module SlotLanguage
2020-02-12 09:41:16 +01:00
# A LoadMaker makes SlotLoad. That means it stores the information
# to be able to create a SlotLoad
#
# Just like the SlotLoad stores two Slots, here we store two SlotMakers
#
class LoadMaker
2020-02-12 09:41:16 +01:00
# The two SlotMakers that become Slots in to_slot
attr_reader :left , :right
def initialize(left , right)
@left = left
@right = right
raise "No Slot #{left}" unless left.is_a?(SlotMaker)
raise "No Slot #{right}" unless right.is_a?(SlotMaker)
end
2019-10-07 19:14:40 +02:00
2020-02-12 09:41:16 +01:00
# create the SlotLoad, by creating the two Slots from the SlotMakers
2019-10-07 19:14:40 +02:00
def to_slot(compiler)
2020-02-12 09:41:16 +01:00
left_d = @left.to_slot(compiler)
right_d = @right.to_slot(compiler)
2019-10-07 19:14:40 +02:00
SlotMachine::SlotLoad.new("source" , left_d , right_d)
end
end
end