Torsten Rüger
d1f8733623
Simple is really the descriptive name for the layer Sure, it is "virtual" but that is not as important as the fact that it is simple (or simplified) Also objct (based really) is better, since orientated implies it is a little like that, but only orientated, not really it. Sol only has objects, nothing else Just cause i was renaming anyway
28 lines
745 B
Ruby
28 lines
745 B
Ruby
module Sol
|
|
|
|
class MacroExpression < CallStatement
|
|
|
|
def initialize(name , arguments )
|
|
super(name , SelfExpression.new , arguments)
|
|
end
|
|
|
|
def to_slot(compiler)
|
|
parts = name.to_s.split("_")
|
|
class_name = "SlotMachine::#{parts.collect{|s| s.capitalize}.join}"
|
|
eval(class_name).new( self , *arguments)
|
|
end
|
|
|
|
# When used as right hand side, this tells what data to move to get the result into
|
|
# a varaible. It is (off course) the return value of the message
|
|
def to_slot_definition(_)
|
|
SlotMachine::SlotDefinition.new(:message ,[ :return_value])
|
|
end
|
|
|
|
def to_s(depth = 0)
|
|
sen = "X.#{name}(#{@arguments.collect{|a| a.to_s}.join(', ')})"
|
|
at_depth(depth , sen)
|
|
end
|
|
|
|
end
|
|
end
|