Fix some NFA creation
This commit is contained in:
parent
f38a7456e9
commit
43f5caf449
@ -31,7 +31,7 @@ module Imbecile
|
|||||||
|
|
||||||
def empty
|
def empty
|
||||||
nfa = NFA.new
|
nfa = NFA.new
|
||||||
nfa.end_state = nfa.start_state
|
nfa.start_state.add_transition(nil, nfa.end_state)
|
||||||
nfa
|
nfa
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -16,12 +16,16 @@ module Imbecile
|
|||||||
if @units.empty?
|
if @units.empty?
|
||||||
NFA.empty
|
NFA.empty
|
||||||
else
|
else
|
||||||
@units.map do |unit|
|
nfa = NFA.new
|
||||||
|
unit_nfas = @units.map do |unit|
|
||||||
unit.to_nfa
|
unit.to_nfa
|
||||||
end.reduce do |result, nfa|
|
|
||||||
result.end_state.add_transition(nil, nfa.start_state)
|
|
||||||
result
|
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
@ -156,7 +160,7 @@ module Imbecile
|
|||||||
end
|
end
|
||||||
unit_nfa.end_state.add_transition(nil, nfa.end_state)
|
unit_nfa.end_state.add_transition(nil, nfa.end_state)
|
||||||
if @max_count.nil?
|
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
|
else
|
||||||
(@max_count - @min_count).times do
|
(@max_count - @min_count).times do
|
||||||
prev_nfa = unit_nfa
|
prev_nfa = unit_nfa
|
||||||
|
Loading…
x
Reference in New Issue
Block a user