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 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 racc/state.rb, line 51
def [](i)
  @states[i]
end
dfa() click to toggle source

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
each(&block)
Alias for: each_state
each_index(&block) click to toggle source
# File racc/state.rb, line 61
def each_index(&block)
  @states.each_index(&block)
end
each_state(&block) click to toggle source
# File racc/state.rb, line 55
def each_state(&block)
  @states.each(&block)
end
Also aliased as: each
inspect() click to toggle source
# File racc/state.rb, line 45
def inspect
  '#<state table>'
end
Also aliased as: to_s
n_rrconflicts() click to toggle source
# File racc/state.rb, line 88
def n_rrconflicts
  @n_rrconflicts ||= inject(0) {|sum, st| sum + st.n_rrconflicts }
end
n_srconflicts() click to toggle source
# File racc/state.rb, line 80
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 racc/state.rb, line 102
def nfa
  return self if @nfa_computed
  compute_nfa
  @nfa_computed = true
  self
end
rrconflict_exist?() click to toggle source
# File racc/state.rb, line 84
def rrconflict_exist?
  n_rrconflicts() != 0
end
should_report_srconflict?() click to toggle source
# File 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 racc/state.rb, line 41
def size
  @states.size
end
srconflict_exist?() click to toggle source
# File racc/state.rb, line 76
def srconflict_exist?
  n_srconflicts() != 0
end
state_transition_table() click to toggle source
# File racc/state.rb, line 92
def state_transition_table
  @state_transition_table ||= StateTransitionTable.generate(self.dfa)
end
to_s()
Alias for: inspect