Class: Aurum::SubsetDeterminizer
- Inherits:
-
Object
- Object
- Aurum::SubsetDeterminizer
- Defined in:
- lib/aurum/lexical_table_generator.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.
267 268 269 270 271 |
# File 'lib/aurum/lexical_table_generator.rb', line 267 def initialize nondeterministic, accepts @unmarked, @dstates, @accepts = [], [], accepts @nondeterministic, @deterministic, @accept_states = nondeterministic, Automata.new, {} unmark closure([0]) end |
Instance Method Details
#determinize ⇒ Object
273 274 275 276 277 278 279 280 281 282 283 |
# File 'lib/aurum/lexical_table_generator.rb', line 273 def determinize until @unmarked.empty? start = @unmarked.pop @nondeterministic.alphabet(@dstates[start]) do |states, symbols| destination_state = closure(states) destination = unmark destination_state unless destination = @dstates.index(destination_state) @deterministic.connect start, symbols, destination end end return @deterministic, @accept_states end |