Object
A table of LALR states.
# File racc/state.rb, line 25
def initialize(grammar, debug_flags = DebugFlags.new)
@grammar = grammar
@symboltable = grammar.symboltable
@d_state = debug_flags.state
@d_la = debug_flags.la
@d_prec = debug_flags.prec
@states = []
@statecache = {}
@actions = ActionTable.new(@grammar, self)
@nfa_computed = false
@dfa_computed = false
end
DFA (Deterministic Finite Automaton) Generation
# File racc/state.rb, line 196
def dfa
return self if @dfa_computed
nfa
compute_dfa
@dfa_computed = true
self
end
# File racc/state.rb, line 61
def each_index(&block)
@states.each_index(&block)
end
# File racc/state.rb, line 55
def each_state(&block)
@states.each(&block)
end
# File racc/state.rb, line 45
def inspect
'#<state table>'
end
# File racc/state.rb, line 88
def n_rrconflicts
@n_rrconflicts ||= inject(0) {|sum, st| sum + st.n_rrconflicts }
end
# File racc/state.rb, line 80
def n_srconflicts
@n_srconflicts ||= inject(0) {|sum, st| sum + st.n_srconflicts }
end
NFA (Non-deterministic Finite Automaton) Computation
# File racc/state.rb, line 102
def nfa
return self if @nfa_computed
compute_nfa
@nfa_computed = true
self
end
# File racc/state.rb, line 84
def rrconflict_exist?
n_rrconflicts() != 0
end
# File racc/state.rb, line 71
def should_report_srconflict?
srconflict_exist? and
(n_srconflicts() != @grammar.n_expected_srconflicts)
end
# File racc/state.rb, line 76
def srconflict_exist?
n_srconflicts() != 0
end