rubyx/lib/ast/basic_expressions.rb

58 lines
1.0 KiB
Ruby

# collection of the simple ones, int and strings and such
module Ast
class IntegerExpression < Expression
attr_reader :value
def initialize val
@value = val
end
def inspect
self.class.name + ".new(" + value.to_s+ ")"
end
def compile context
Vm::Signed.new value
end
def attributes
[:value]
end
end
class NameExpression < Expression
attr_reader :name
def initialize name
@name = name
end
def compile context
variable = Vm::Variable.new(@name)
context.locals[@name] = variable
variable
end
def inspect
self.class.name + '.new("' + name + '")'
end
def attributes
[:name]
end
end
class StringExpression < Expression
attr_reader :string
def initialize str
@string = str
end
def inspectt
"#{string}"
end
def compile context
value = Vm::StringLiteral.new(string)
context.program.add_object value
value
end
def attributes
[:string]
end
end
end