From 827ff6155bbf5015f89f68443ddec2106949371d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz>
Date: Sat, 29 Mar 2014 23:18:30 +0100
Subject: [PATCH] aconversion: Special case in FA -> RRG conversion

---
 aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
index 30fc37d17d..3190b40932 100644
--- a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
+++ b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
@@ -40,7 +40,13 @@ RightRegularGrammar FAtoRRGConverter::convert( void )
             list<Symbol> leftSide, rightSide;
             leftSide.push_back( symbolMap.getNonTerminal( transition.getFrom( ) ) );
             rightSide.push_back( transition.getInput( ) );
-            m_grammar.addRule( Rule( leftSide, rightSide ) );
+
+            /*
+             *  Rule might already in - consider case:
+             *  \delta(A,a) = F and \delta(B,a) = G, where both F and G are final states
+             */
+            if( ! isInSet( Rule( leftSide, rightSide), m_grammar.getRules( ) ) )
+                m_grammar.addRule( Rule( leftSide, rightSide ) );
         }
     }
 
-- 
GitLab