2017-04-10 10:47:18 +02:00
|
|
|
module Mom
|
|
|
|
|
|
|
|
# Base class for MOM instructions
|
|
|
|
class Instruction
|
2017-09-08 12:10:22 +02:00
|
|
|
include Common::List
|
2017-09-04 20:00:08 +02:00
|
|
|
|
2017-09-06 11:11:30 +02:00
|
|
|
# implement flatten as noop to avoid condition
|
2017-09-08 12:10:22 +02:00
|
|
|
def flatten( options = {} )
|
|
|
|
return self
|
2017-09-04 20:00:08 +02:00
|
|
|
end
|
2017-04-10 10:47:18 +02:00
|
|
|
end
|
|
|
|
|
2017-09-04 20:00:08 +02:00
|
|
|
# A label with a name
|
2017-09-08 12:10:22 +02:00
|
|
|
class Label < Instruction
|
2017-08-30 16:21:13 +02:00
|
|
|
attr_reader :name
|
|
|
|
def initialize(name)
|
|
|
|
@name = name
|
|
|
|
end
|
|
|
|
end
|
2017-04-10 10:47:18 +02:00
|
|
|
end
|
2017-04-12 10:53:02 +02:00
|
|
|
|
2017-04-15 19:58:39 +02:00
|
|
|
require_relative "simple_call"
|
2017-08-30 16:21:13 +02:00
|
|
|
require_relative "truth_check"
|
|
|
|
require_relative "jump"
|
2017-04-12 10:53:02 +02:00
|
|
|
require_relative "slot_load"
|
2017-04-14 20:01:50 +02:00
|
|
|
require_relative "return_sequence"
|
2017-09-06 11:33:46 +02:00
|
|
|
require_relative "statement"
|