class Racc::States
A table of LALR states.
Constants
- ASSOC
Attributes
actions[R]
grammar[R]
Public Class Methods
new(grammar, debug_flags = DebugFlags.new)
click to toggle source
# File lib/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
Public Instance Methods
[](i)
click to toggle source
# File lib/racc/state.rb, line 51 def [](i) @states[i] end
dfa()
click to toggle source
DFA (Deterministic Finite Automaton) Generation
# File lib/racc/state.rb, line 200 def dfa return self if @dfa_computed nfa compute_dfa @dfa_computed = true self end
each_index(&block)
click to toggle source
# File lib/racc/state.rb, line 61 def each_index(&block) @states.each_index(&block) end
each_state(&block)
click to toggle source
# File lib/racc/state.rb, line 55 def each_state(&block) @states.each(&block) end
Also aliased as: each
inspect()
click to toggle source
# File lib/racc/state.rb, line 45 def inspect '#<state table>' end
Also aliased as: to_s
n_rrconflicts()
click to toggle source
# File lib/racc/state.rb, line 92 def n_rrconflicts @n_rrconflicts ||= inject(0) {|sum, st| sum + st.n_rrconflicts } end
n_srconflicts()
click to toggle source
# File lib/racc/state.rb, line 84 def n_srconflicts @n_srconflicts ||= inject(0) {|sum, st| sum + st.n_srconflicts } end
nfa()
click to toggle source
NFA (Non-deterministic Finite Automaton) Computation
# File lib/racc/state.rb, line 106 def nfa return self if @nfa_computed compute_nfa @nfa_computed = true self end
rrconflict_exist?()
click to toggle source
# File lib/racc/state.rb, line 88 def rrconflict_exist? n_rrconflicts() != 0 end
should_error_on_expect_mismatch?()
click to toggle source
# File lib/racc/state.rb, line 76 def should_error_on_expect_mismatch? should_report_srconflict? && @grammar.error_on_expect_mismatch end
should_report_srconflict?()
click to toggle source
# File lib/racc/state.rb, line 71 def should_report_srconflict? srconflict_exist? and (n_srconflicts() != @grammar.n_expected_srconflicts) end
size()
click to toggle source
# File lib/racc/state.rb, line 41 def size @states.size end
srconflict_exist?()
click to toggle source
# File lib/racc/state.rb, line 80 def srconflict_exist? n_srconflicts() != 0 end
state_transition_table()
click to toggle source
# File lib/racc/state.rb, line 96 def state_transition_table @state_transition_table ||= StateTransitionTable.generate(self.dfa) end