class Racc::ActionTable
Shift, Reduce, Accept and Error.
The table of LALR actions. Actions are either of
def each_reduce(&block)
def each_reduce(&block) @reduce.each(&block) end
def each_shift(&block)
def each_shift(&block) @shift.each(&block) end
def init
def init @grammar.each do |rule| @reduce.push Reduce.new(rule) end @statetable.each do |state| @shift.push Shift.new(state) end @accept = Accept.new @error = Error.new end
def initialize(rt, st)
def initialize(rt, st) @grammar = rt @statetable = st @reduce = [] @shift = [] @accept = nil @error = nil end
def reduce(i)
def reduce(i) case i when Rule then i = i.ident when Integer then ; else raise "racc: fatal: wrong class #{i.class} for reduce" end r = @reduce[i] or raise "racc: fatal: reduce action #{i.inspect} not exist" r.incref r end
def reduce_n
def reduce_n @reduce.size end
def shift(i)
def shift(i) case i when State then i = i.ident when Integer then ; else raise "racc: fatal: wrong class #{i.class} for shift" end @shift[i] or raise "racc: fatal: shift action #{i} does not exist" end
def shift_n
def shift_n @shift.size end