Fix some NFA creation

This commit is contained in:
Josh Holtrop 2021-05-20 17:34:18 -04:00
parent f38a7456e9
commit 43f5caf449
2 changed files with 10 additions and 6 deletions

View File

@ -31,7 +31,7 @@ module Imbecile
def empty
nfa = NFA.new
nfa.end_state = nfa.start_state
nfa.start_state.add_transition(nil, nfa.end_state)
nfa
end

View File

@ -16,12 +16,16 @@ module Imbecile
if @units.empty?
NFA.empty
else
@units.map do |unit|
nfa = NFA.new
unit_nfas = @units.map do |unit|
unit.to_nfa
end.reduce do |result, nfa|
result.end_state.add_transition(nil, nfa.start_state)
result
end
nfa.start_state.add_transition(nil, unit_nfas[0].start_state)
unit_nfas.reduce do |prev_nfa, next_nfa|
prev_nfa.end_state.add_transition(nil, next_nfa.start_state)
next_nfa
end.end_state.add_transition(nil, nfa.end_state)
nfa
end
end
end
@ -156,7 +160,7 @@ module Imbecile
end
unit_nfa.end_state.add_transition(nil, nfa.end_state)
if @max_count.nil?
unit_nfa.end_state.add_transition(nil, nfa.start_state)
unit_nfa.end_state.add_transition(nil, unit_nfa.start_state)
else
(@max_count - @min_count).times do
prev_nfa = unit_nfa