diff --git a/aconversions/src/aconversion/ConversionHandler.cpp b/aconversions/src/aconversion/ConversionHandler.cpp index bc8b8084bc2c9fc988e0c665b7cb4a7f62d362a0..c7f8637b50b559c74cce895c0bb7c2e11ad5430e 100644 --- a/aconversions/src/aconversion/ConversionHandler.cpp +++ b/aconversions/src/aconversion/ConversionHandler.cpp @@ -388,7 +388,8 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void bool ll, rl, lr, rr; ll = rl = lr = rr = true; - UnknownGrammar grammar = GrammarParser::parse( m_tokens ); + list<Token> tokens_copy = m_tokens; + UnknownGrammar grammar = GrammarParser::parse( tokens_copy ); try { @@ -398,6 +399,7 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void { rr = false; } + if( rr ) return RIGHT_REGULAR_GRAMMAR; try { @@ -407,6 +409,7 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void { lr = false; } + if( lr ) return LEFT_REGULAR_GRAMMAR; try { @@ -416,6 +419,7 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void { rl = false; } + if( rl ) return RIGHT_LINEAR_GRAMMAR; try { @@ -425,11 +429,7 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void { ll = false; } - if( ll ) return LEFT_LINEAR_GRAMMAR; - if( rl ) return RIGHT_LINEAR_GRAMMAR; - if( lr ) return LEFT_REGULAR_GRAMMAR; - if( rr ) return RIGHT_REGULAR_GRAMMAR; } throw AlibException( "ConversionHandler: Invalid input formalism." );