class Racc::ActionTable
The table of LALR actions. Actions are either of Shift
, Reduce
, Accept
and Error
.
Attributes
accept[R]
error[R]
Public Class Methods
new(rt, st)
click to toggle source
# File lib/racc/state.rb, line 810 def initialize(rt, st) @grammar = rt @statetable = st @reduce = [] @shift = [] @accept = nil @error = nil end
Public Instance Methods
each_reduce(&block)
click to toggle source
# File lib/racc/state.rb, line 848 def each_reduce(&block) @reduce.each(&block) end
each_shift(&block)
click to toggle source
# File lib/racc/state.rb, line 867 def each_shift(&block) @shift.each(&block) end
init()
click to toggle source
# File lib/racc/state.rb, line 820 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
reduce(i)
click to toggle source
# File lib/racc/state.rb, line 835 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
reduce_n()
click to toggle source
# File lib/racc/state.rb, line 831 def reduce_n @reduce.size end
shift(i)
click to toggle source
# File lib/racc/state.rb, line 856 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
shift_n()
click to toggle source
# File lib/racc/state.rb, line 852 def shift_n @shift.size end