diff --git a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp index 30fc37d17d8b577cf803a22a18ef0217146303cf..3190b40932bdab36e12979ab8d41b4d6ad81372e 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 ) ); } }