From 538e360cb3f43280ea129c55a173d0ff53f019f3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 25 May 2021 16:59:22 -0400 Subject: [PATCH] Fix MultiplicityUnit#to_nfa --- lib/imbecile/regex/unit.rb | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/imbecile/regex/unit.rb b/lib/imbecile/regex/unit.rb index 28c5c70..9ddc569 100644 --- a/lib/imbecile/regex/unit.rb +++ b/lib/imbecile/regex/unit.rb @@ -132,26 +132,26 @@ module Imbecile end def to_nfa nfa = NFA.new - unit_nfa = @unit.to_nfa - nfa.start_state.add_transition(nil, unit_nfa.start_state) - if @min_count == 0 - nfa.start_state.add_transition(nil, nfa.end_state) - else - (@min_count - 1).times do - prev_nfa = unit_nfa - unit_nfa = @unit.to_nfa - prev_nfa.end_state.add_transition(nil, unit_nfa.start_state) - end + last_state = nfa.start_state + unit_nfa = nil + @min_count.times do + unit_nfa = @unit.to_nfa + last_state.add_transition(nil, unit_nfa.start_state) + last_state = unit_nfa.end_state end - unit_nfa.end_state.add_transition(nil, nfa.end_state) + last_state.add_transition(nil, nfa.end_state) 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) else (@max_count - @min_count).times do - prev_nfa = unit_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) + last_state = unit_nfa.end_state end end nfa