Class: Racc::States
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/racc/state.rb
Overview
A table of LALR states.
Instance Attribute Summary collapse
-
#actions ⇒ Object
readonly
Returns the value of attribute actions.
-
#grammar ⇒ Object
readonly
Returns the value of attribute grammar.
Instance Method Summary collapse
- #[](i) ⇒ Object
- #dfa ⇒ Object
- #each_index(&block) ⇒ Object
- #each_state(&block) ⇒ Object (also: #each)
-
#initialize(grammar, debug_flags = DebugFlags.new) ⇒ States
constructor
A new instance of States.
- #inspect ⇒ Object (also: #to_s)
- #n_rrconflicts ⇒ Object
- #n_srconflicts ⇒ Object
- #nfa ⇒ Object
- #rrconflict_exist? ⇒ Boolean
- #should_error_on_expect_mismatch? ⇒ Boolean
- #should_report_srconflict? ⇒ Boolean
- #size ⇒ Object
- #srconflict_exist? ⇒ Boolean
- #state_transition_table ⇒ Object
Constructor Details
#initialize(grammar, debug_flags = DebugFlags.new) ⇒ States
Returns a new instance of States.
25 26 27 28 29 30 31 32 33 34 35 36 |
# 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 |
Instance Attribute Details
#actions ⇒ Object (readonly)
Returns the value of attribute actions.
39 40 41 |
# File 'lib/racc/state.rb', line 39 def actions @actions end |
#grammar ⇒ Object (readonly)
Returns the value of attribute grammar.
38 39 40 |
# File 'lib/racc/state.rb', line 38 def grammar @grammar end |
Instance Method Details
#[](i) ⇒ Object
51 52 53 |
# File 'lib/racc/state.rb', line 51 def [](i) @states[i] end |
#dfa ⇒ Object
200 201 202 203 204 205 206 |
# 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) ⇒ Object
61 62 63 |
# File 'lib/racc/state.rb', line 61 def each_index(&block) @states.each_index(&block) end |
#each_state(&block) ⇒ Object Also known as: each
55 56 57 |
# File 'lib/racc/state.rb', line 55 def each_state(&block) @states.each(&block) end |
#inspect ⇒ Object Also known as: to_s
45 46 47 |
# File 'lib/racc/state.rb', line 45 def inspect '#<state table>' end |
#n_rrconflicts ⇒ Object
92 93 94 |
# File 'lib/racc/state.rb', line 92 def n_rrconflicts @n_rrconflicts ||= inject(0) {|sum, st| sum + st.n_rrconflicts } end |
#n_srconflicts ⇒ Object
84 85 86 |
# File 'lib/racc/state.rb', line 84 def n_srconflicts @n_srconflicts ||= inject(0) {|sum, st| sum + st.n_srconflicts } end |
#nfa ⇒ Object
106 107 108 109 110 111 |
# File 'lib/racc/state.rb', line 106 def nfa return self if @nfa_computed compute_nfa @nfa_computed = true self end |
#rrconflict_exist? ⇒ Boolean
88 89 90 |
# File 'lib/racc/state.rb', line 88 def rrconflict_exist? n_rrconflicts() != 0 end |
#should_error_on_expect_mismatch? ⇒ Boolean
76 77 78 |
# 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? ⇒ Boolean
71 72 73 74 |
# File 'lib/racc/state.rb', line 71 def should_report_srconflict? srconflict_exist? and (n_srconflicts() != @grammar.n_expected_srconflicts) end |
#size ⇒ Object
41 42 43 |
# File 'lib/racc/state.rb', line 41 def size @states.size end |
#srconflict_exist? ⇒ Boolean
80 81 82 |
# File 'lib/racc/state.rb', line 80 def srconflict_exist? n_srconflicts() != 0 end |
#state_transition_table ⇒ Object
96 97 98 |
# File 'lib/racc/state.rb', line 96 def state_transition_table @state_transition_table ||= StateTransitionTable.generate(self.dfa) end |