@ -10,80 +10,80 @@ namespace storm { 
			
		
	
		
			
				
					            identifier . name ( " identifier " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                floorCeilExpression  =  ( ( floorCeilOperator_  > >  qi : : lit ( " ( " ) )  > >  expression  > >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createFloorCeilExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                floorCeilExpression  =  ( ( floorCeilOperator_  > >  qi : : lit ( " ( " ) )  > >  expression  > >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createFloorCeilExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                floorCeilExpression  =  ( ( floorCeilOperator_  > >  qi : : lit ( " ( " ) )  >  expression  >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createFloorCeilExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                floorCeilExpression  =  ( ( floorCeilOperator_  > >  qi : : lit ( " ( " ) )  >  expression  >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createFloorCeilExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            floorCeilExpression . name ( " floor/ceil expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                minMaxExpression  =  ( ( minMaxOperator_ [ qi : : _a  =  qi : : _1 ]  > >  qi : : lit ( " ( " ) )  > >  expression [ qi : : _val  =  qi : : _1 ]  > >  + ( qi : : lit ( " , " )  > >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMinimumMaximumExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _a ,  qi : : _1 ) ] )  > >  qi : : lit ( " ) " ) ;  
			
		
	
		
			
				
					                minMaxExpression  =  ( ( minMaxOperator_ [ qi : : _a  =  qi : : _1 ]  > >  qi : : lit ( " ( " ) )  > >  expression [ qi : : _val  =  qi : : _1 ]  > >  + ( qi : : lit ( " , " )  > >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMinimumMaximumExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _a ,  qi : : _1 ,  qi : : _pass ) ] )  > >  qi : : lit ( " ) " ) ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                minMaxExpression  =  ( ( minMaxOperator_ [ qi : : _a  =  qi : : _1 ]  > >  qi : : lit ( " ( " ) )  >  expression [ qi : : _val  =  qi : : _1 ]  >  + ( qi : : lit ( " , " )  >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMinimumMaximumExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _a ,  qi : : _1 ) ] )  >  qi : : lit ( " ) " ) ;  
			
		
	
		
			
				
					                minMaxExpression  =  ( ( minMaxOperator_ [ qi : : _a  =  qi : : _1 ]  > >  qi : : lit ( " ( " ) )  >  expression [ qi : : _val  =  qi : : _1 ]  >  + ( qi : : lit ( " , " )  >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMinimumMaximumExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _a ,  qi : : _1 ,  qi : : _pass ) ] )  >  qi : : lit ( " ) " ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            minMaxExpression . name ( " min/max expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                prefixPowerExpression  =  ( ( prefixPowerOperator_  > >  qi : : lit ( " ( " ) )  > >  expression  > >  qi : : lit ( " , " )  > >  expression  > >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _2 ,  qi : : _1 ,  qi : : _3 ) ] ;  
			
		
	
		
			
				
					                prefixPowerExpression  =  ( ( prefixPowerOperator_  > >  qi : : lit ( " ( " ) )  > >  expression  > >  qi : : lit ( " , " )  > >  expression  > >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _2 ,  qi : : _1 ,  qi : : _3 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                prefixPowerExpression  =  ( ( prefixPowerOperator_  > >  qi : : lit ( " ( " ) )  >  expression  >  qi : : lit ( " , " )  >  expression  >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _2 ,  qi : : _1 ,  qi : : _3 ) ] ;  
			
		
	
		
			
				
					                prefixPowerExpression  =  ( ( prefixPowerOperator_  > >  qi : : lit ( " ( " ) )  >  expression  >  qi : : lit ( " , " )  >  expression  >  qi : : lit ( " ) " ) ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _2 ,  qi : : _1 ,  qi : : _3 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            prefixPowerExpression . name ( " pow expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
								identifierExpression  =  identifier [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : getIdentifierExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  allowBacktracking ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            identifierExpression . name ( " identifier expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            literalExpression  =  trueFalse_ [ qi : : _val  =  qi : : _1 ]  |  strict_double [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createDoubleLiteralExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _pass ) ]  |  qi : : int_ [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createIntegerLiteralExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ) ] ;  
			
		
	
		
			
				
					            literalExpression  =  trueFalse_ [ qi : : _val  =  qi : : _1 ]  |  strict_double [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createDoubleLiteralExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _pass ) ]  |  qi : : int_ [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createIntegerLiteralExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            literalExpression . name ( " literal expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            atomicExpression  =  floorCeilExpression  |  prefixPowerExpression  |  minMaxExpression  |  ( qi : : lit ( " ( " )  > >  expression  > >  qi : : lit ( " ) " ) )  |  literalExpression  |  identifierExpression ;  
			
		
	
		
			
				
					            atomicExpression . name ( " atomic expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            unaryExpression  =  ( - unaryOperator_  > >  atomicExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createUnaryExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					            unaryExpression  =  ( - unaryOperator_  > >  atomicExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createUnaryExpression ,  phoenix : : ref ( * this ) ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            unaryExpression . name ( " unary expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                infixPowerExpression  =  unaryExpression [ qi : : _val  =  qi : : _1 ]  >  - ( infixPowerOperator_  >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                infixPowerExpression  =  unaryExpression [ qi : : _val  =  qi : : _1 ]  >  - ( infixPowerOperator_  >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                infixPowerExpression  =  unaryExpression [ qi : : _val  =  qi : : _1 ]  >  - ( infixPowerOperator_  > >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                infixPowerExpression  =  unaryExpression [ qi : : _val  =  qi : : _1 ]  >  - ( infixPowerOperator_  > >  expression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPowerExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            infixPowerExpression . name ( " power expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                multiplicationExpression  =  infixPowerExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( multiplicationOperator_  > >  infixPowerExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMultExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                multiplicationExpression  =  infixPowerExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( multiplicationOperator_  > >  infixPowerExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMultExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                multiplicationExpression  =  infixPowerExpression [ qi : : _val  =  qi : : _1 ]  >  * ( multiplicationOperator_  >  infixPowerExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMultExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                multiplicationExpression  =  infixPowerExpression [ qi : : _val  =  qi : : _1 ]  >  * ( multiplicationOperator_  >  infixPowerExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createMultExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            multiplicationExpression . name ( " multiplication expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            plusExpression  =  multiplicationExpression [ qi : : _val  =  qi : : _1 ]  >  * ( plusOperator_  > >  multiplicationExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPlusExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					            plusExpression  =  multiplicationExpression [ qi : : _val  =  qi : : _1 ]  >  * ( plusOperator_  > >  multiplicationExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createPlusExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            plusExpression . name ( " plus expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                relativeExpression  =  plusExpression [ qi : : _val  =  qi : : _1 ]  > >  - ( relationalOperator_  > >  plusExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createRelationalExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                relativeExpression  =  plusExpression [ qi : : _val  =  qi : : _1 ]  > >  - ( relationalOperator_  > >  plusExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createRelationalExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                relativeExpression  =  plusExpression [ qi : : _val  =  qi : : _1 ]  >  - ( relationalOperator_  >  plusExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createRelationalExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                relativeExpression  =  plusExpression [ qi : : _val  =  qi : : _1 ]  >  - ( relationalOperator_  >  plusExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createRelationalExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            relativeExpression . name ( " relative expression " ) ;  
			
		
	
		
			
				
					                         
			
		
	
		
			
				
					            equalityExpression  =  relativeExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( equalityOperator_  > >  relativeExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createEqualsExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					            equalityExpression  =  relativeExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( equalityOperator_  > >  relativeExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createEqualsExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            equalityExpression . name ( " equality expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                andExpression  =  equalityExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( andOperator_  > >  equalityExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createAndExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                andExpression  =  equalityExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( andOperator_  > >  equalityExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createAndExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                andExpression  =  equalityExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( andOperator_  >  equalityExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createAndExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                andExpression  =  equalityExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( andOperator_  >  equalityExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createAndExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            andExpression . name ( " and expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( allowBacktracking )  {  
			
		
	
		
			
				
					                orExpression  =  andExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( orOperator_  > >  andExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createOrExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                orExpression  =  andExpression [ qi : : _val  =  qi : : _1 ]  > >  * ( orOperator_  > >  andExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createOrExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                orExpression  =  andExpression [ qi : : _val  =  qi : : _1 ]  >  * ( orOperator_  >  andExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createOrExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					                orExpression  =  andExpression [ qi : : _val  =  qi : : _1 ]  >  * ( orOperator_  >  andExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createOrExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            orExpression . name ( " or expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            iteExpression  =  orExpression [ qi : : _val  =  qi : : _1 ]  >  - ( qi : : lit ( " ? " )  >  orExpression  >  qi : : lit ( " : " )  >  orExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createIteExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ) ] ;  
			
		
	
		
			
				
					            iteExpression  =  orExpression [ qi : : _val  =  qi : : _1 ]  >  - ( qi : : lit ( " ? " )  >  orExpression  >  qi : : lit ( " : " )  >  orExpression ) [ qi : : _val  =  phoenix : : bind ( & ExpressionParser : : createIteExpression ,  phoenix : : ref ( * this ) ,  qi : : _val ,  qi : : _1 ,  qi : : _2 ,  qi : : _pass ) ] ;  
			
		
	
		
			
				
					            iteExpression . name ( " if-then-else expression " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            expression  % =  iteExpression ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -144,18 +144,18 @@ namespace storm { 
			
		
	
		
			
				
					            this - > acceptDoubleLiterals  =  flag ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createIteExpression ( storm : : expressions : : Expression  e1 ,  storm : : expressions : : Expression  e2 ,  storm : : expressions : : Expression  e3 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createIteExpression ( storm : : expressions : : Expression  e1 ,  storm : : expressions : : Expression  e2 ,  storm : : expressions : : Expression  e3 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    return  storm : : expressions : : ite ( e1 ,  e2 ,  e3 ) ;  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createOrExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createOrExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -164,27 +164,29 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createAndExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createAndExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                storm : : expressions : : Expression  result ;  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
		
			
				
					                        case  storm : : expressions : : OperatorType : : And :  return e1  & &  e2 ;  break ;  
			
		
	
		
			
				
					                        case  storm : : expressions : : OperatorType : : And :  result  = e1  & &  e2 ;  break ;  
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                return  result ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createRelationalExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createRelationalExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -195,13 +197,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createEqualsExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createEqualsExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -210,13 +212,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createPlusExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createPlusExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -225,13 +227,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createMultExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createMultExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -240,13 +242,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createPowerExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createPowerExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -254,13 +256,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createUnaryExpression ( boost : : optional < storm : : expressions : : OperatorType >  const &  operatorType ,  storm : : expressions : : Expression  const &  e1 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createUnaryExpression ( boost : : optional < storm : : expressions : : OperatorType >  const &  operatorType ,  storm : : expressions : : Expression  const &  e1 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    if  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -273,7 +275,7 @@ namespace storm { 
			
		
	
		
			
				
					                        return  e1 ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -292,7 +294,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createIntegerLiteralExpression ( int  value )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createIntegerLiteralExpression ( int  value ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                return  manager - > integer ( value ) ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -300,7 +302,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createMinimumMaximumExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createMinimumMaximumExpression ( storm : : expressions : : Expression  const &  e1 ,  storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e2 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -309,13 +311,13 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createFloorCeilExpression ( storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e1 )  const  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  ExpressionParser : : createFloorCeilExpression ( storm : : expressions : : OperatorType  const &  operatorType ,  storm : : expressions : : Expression  const &  e1 ,  bool &  pass )  const  {  
			
		
	
		
			
				
					            if  ( this - > createExpressions )  {  
			
		
	
		
			
				
					                try  {  
			
		
	
		
			
				
					                    switch  ( operatorType )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -324,7 +326,7 @@ namespace storm { 
			
		
	
		
			
				
					                        default :  STORM_LOG_ASSERT ( false ,  " Invalid operation. " ) ;  break ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  catch  ( storm : : exceptions : : InvalidTypeException  const &  e )  {  
			
		
	
		
			
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " :  "  < <  e . what ( ) ) ;  
			
		
	
		
			
				
					                    pass  =  false ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            return  manager - > boolean ( false ) ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -339,7 +341,7 @@ namespace storm { 
			
		
	
		
			
				
					                        pass  =  false ;  
			
		
	
		
			
				
					                        return  manager - > boolean ( false ) ;  
			
		
	
		
			
				
					                    }  else  {  
			
		
	
		
			
				
					                        STORM_LOG_THROW ( expression  ! =  nullptr ,  storm : : exceptions : : WrongFormatException ,  " Parsing error in line  "  < <  get_line ( qi : : _3 )  < <  " : Undeclared identifier ' "  < <  identifier  < <  " '. " ) ;  
			
		
	
		
			
				
					                        pass  =  false ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                return  * expression ;