Fix MultiplicityUnit#to_nfa
This commit is contained in:
parent
e7f8c3726c
commit
538e360cb3
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user