Fix MultiplicityUnit#to_nfa

This commit is contained in:
Josh Holtrop 2021-05-25 16:59:22 -04:00
parent e7f8c3726c
commit 538e360cb3

View File

@ -132,26 +132,26 @@ module Imbecile
end end
def to_nfa def to_nfa
nfa = NFA.new nfa = NFA.new
unit_nfa = @unit.to_nfa last_state = nfa.start_state
nfa.start_state.add_transition(nil, unit_nfa.start_state) unit_nfa = nil
if @min_count == 0 @min_count.times do
nfa.start_state.add_transition(nil, nfa.end_state) unit_nfa = @unit.to_nfa
else last_state.add_transition(nil, unit_nfa.start_state)
(@min_count - 1).times do last_state = unit_nfa.end_state
prev_nfa = unit_nfa
unit_nfa = @unit.to_nfa
prev_nfa.end_state.add_transition(nil, unit_nfa.start_state)
end
end end
unit_nfa.end_state.add_transition(nil, nfa.end_state) last_state.add_transition(nil, nfa.end_state)
if @max_count.nil? if @max_count.nil?
if @min_count == 0
unit_nfa = @unit.to_nfa
last_state.add_transition(nil, unit_nfa.start_state)
end
unit_nfa.end_state.add_transition(nil, unit_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
unit_nfa = @unit.to_nfa unit_nfa = @unit.to_nfa
prev_nfa.end_state.add_transition(nil, unit_nfa.start_state) last_state.add_transition(nil, unit_nfa.start_state)
unit_nfa.end_state.add_transition(nil, nfa.end_state) unit_nfa.end_state.add_transition(nil, nfa.end_state)
last_state = unit_nfa.end_state
end end
end end
nfa nfa