rubyx/lib/asm/nodes.rb

57 lines
1.1 KiB
Ruby
Raw Normal View History

2014-04-16 11:03:39 +02:00
module Asm
class Node
end
class InstructionNode < Node
attr_accessor :opcode, :args
end
class ShiftNode < Node
attr_accessor :type, :value, :argument
end
class MathNode < Node
attr_accessor :left, :right, :op
alias_method :argument, :left
alias_method :argument=, :left=
end
class RegisterNode < Node
2014-04-16 11:03:39 +02:00
attr_accessor :name
def initialize name
@name = name
end
2014-04-16 11:03:39 +02:00
end
#maybe not used at all as code_gen::instruction raises if used.
# instead now using Arrays
class RegisterListNode < Node
2014-04-16 11:03:39 +02:00
attr_accessor :registers
def initialize regs
@registers = regs.collect{ |sym , reg| (sym == :reg) ? reg : "not a reg #{sym} , #{reg}" }
end
2014-04-16 11:03:39 +02:00
end
class NumLiteralNode < Node
2014-04-16 11:03:39 +02:00
attr_accessor :value
def initialize val
@value = val
end
2014-04-16 11:03:39 +02:00
end
class LabelRefNode < Node
2014-04-16 11:03:39 +02:00
attr_accessor :label, :label_object
def initialize label , object = nil
@label = label
@label_object = object
end
2014-04-16 11:03:39 +02:00
end
class ParseError < StandardError
def initialize(message, s)
super(message)
end
end
end