Class: Aurum::SubsetDeterminizer

Inherits:
Object
  • Object
show all
Defined in:
lib/aurum/lexical_table_generator.rb

Instance Method Summary collapse

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

#determinizeObject



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