Class: Aurum::Grammar::LexicalRules::SubsetDeterminizer
- Inherits:
-
Object
- Object
- Aurum::Grammar::LexicalRules::SubsetDeterminizer
- Defined in:
- lib/aurum/grammar/automata.rb
Instance Method Summary collapse
- #determinize ⇒ Object
-
#initialize(nondeterministic, accepts) ⇒ SubsetDeterminizer
constructor
A new instance of SubsetDeterminizer.
Constructor Details
#initialize(nondeterministic, accepts) ⇒ SubsetDeterminizer
Returns a new instance of SubsetDeterminizer.
85 86 87 88 |
# File 'lib/aurum/grammar/automata.rb', line 85 def initialize nondeterministic, accepts @unmarked, @dstates, @accepts = [], [], accepts @nondeterministic, @deterministic, @accept_states = nondeterministic, Automata.new, {} end |
Instance Method Details
#determinize ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/aurum/grammar/automata.rb', line 90 def determinize unmark(closure([0])) until @unmarked.empty? start = @unmarked.pop @nondeterministic.alphabet(@dstates[start]) do |states, character_set| destination_state = closure(states) destination = unmark(destination_state) unless destination = @dstates.index(destination_state) @deterministic.connect(start, character_set, destination) end end return @deterministic, @accept_states end |