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." );