InternalXtext.g:3122:1: ruleTerminalToken returns [EObject current=null] : (this_TerminalTokenElement_0= ruleTerminalTokenElement ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )? ) ;
10485
public final EObject ruleTerminalToken() throws RecognitionException {
        EObject current = null;

        Token lv_cardinality_1_1=null;
        Token lv_cardinality_1_2=null;
        Token lv_cardinality_1_3=null;
        EObject this_TerminalTokenElement_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:3128:2: ( (this_TerminalTokenElement_0= ruleTerminalTokenElement ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )? ) )
            // InternalXtext.g:3129:2: (this_TerminalTokenElement_0= ruleTerminalTokenElement ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )? )
            {
            // InternalXtext.g:3129:2: (this_TerminalTokenElement_0= ruleTerminalTokenElement ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )? )
            // InternalXtext.g:3130:3: this_TerminalTokenElement_0= ruleTerminalTokenElement ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )?
            {

            			newCompositeNode(grammarAccess.getTerminalTokenAccess().getTerminalTokenElementParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_31);
            this_TerminalTokenElement_0=ruleTerminalTokenElement();

            state._fsp--;


            			current = this_TerminalTokenElement_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:3138:3: ( ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) ) )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==23||(LA70_0>=32 && LA70_0<=33)) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // InternalXtext.g:3139:4: ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) )
                    {
                    // InternalXtext.g:3139:4: ( (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' ) )
                    // InternalXtext.g:3140:5: (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' )
                    {
                    // InternalXtext.g:3140:5: (lv_cardinality_1_1= '?' | lv_cardinality_1_2= '*' | lv_cardinality_1_3= '+' )
                    int alt69=3;
                    switch ( input.LA(1) ) {
                    case 32:
                        {
                        alt69=1;
                        }
                        break;
                    case 23:
                        {
                        alt69=2;
                        }
                        break;
                    case 33:
                        {
                        alt69=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 69, 0, input);

                        throw nvae;
                    }

                    switch (alt69) {
                        case 1 :
                            // InternalXtext.g:3141:6: lv_cardinality_1_1= '?'
                            {
                            lv_cardinality_1_1=(Token)match(input,32,FollowSets000.FOLLOW_2); 

                            						newLeafNode(lv_cardinality_1_1, grammarAccess.getTerminalTokenAccess().getCardinalityQuestionMarkKeyword_1_0_0());
                            					

                            						if (current==null) {
                            							current = createModelElement(grammarAccess.getTerminalTokenRule());
                            						}
                            						setWithLastConsumed(current, "cardinality", lv_cardinality_1_1, null);
                            					

                            }
                            break;
                        case 2 :
                            // InternalXtext.g:3152:6: lv_cardinality_1_2= '*'
                            {
                            lv_cardinality_1_2=(Token)match(input,23,FollowSets000.FOLLOW_2); 

                            						newLeafNode(lv_cardinality_1_2, grammarAccess.getTerminalTokenAccess().getCardinalityAsteriskKeyword_1_0_1());
                            					

                            						if (current==null) {
                            							current = createModelElement(grammarAccess.getTerminalTokenRule());
                            						}
                            						setWithLastConsumed(current, "cardinality", lv_cardinality_1_2, null);
                            					

                            }
                            break;
                        case 3 :
                            // InternalXtext.g:3163:6: lv_cardinality_1_3= '+'
                            {
                            lv_cardinality_1_3=(Token)match(input,33,FollowSets000.FOLLOW_2); 

                            						newLeafNode(lv_cardinality_1_3, grammarAccess.getTerminalTokenAccess().getCardinalityPlusSignKeyword_1_0_2());
                            					

                            						if (current==null) {
                            							current = createModelElement(grammarAccess.getTerminalTokenRule());
                            						}
                            						setWithLastConsumed(current, "cardinality", lv_cardinality_1_3, null);
                            					

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
664634
public final AntlrDatatypeRuleToken ruleArgument() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_INT_1=null;
        AntlrDatatypeRuleToken this_MethodCallLiteral_0 = null;


         enterRule(); 
            
        try {
            // InternalSimpleExpressions.g:732:28: ( (this_MethodCallLiteral_0= ruleMethodCallLiteral | this_INT_1= RULE_INT ) )
            // InternalSimpleExpressions.g:733:1: (this_MethodCallLiteral_0= ruleMethodCallLiteral | this_INT_1= RULE_INT )
            {
            // InternalSimpleExpressions.g:733:1: (this_MethodCallLiteral_0= ruleMethodCallLiteral | this_INT_1= RULE_INT )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==RULE_ID) ) {
                alt13=1;
            }
            else if ( (LA13_0==RULE_INT) ) {
                alt13=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // InternalSimpleExpressions.g:734:5: this_MethodCallLiteral_0= ruleMethodCallLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getArgumentAccess().getMethodCallLiteralParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_2);
                    this_MethodCallLiteral_0=ruleMethodCallLiteral();

                    state._fsp--;


                    		current.merge(this_MethodCallLiteral_0);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // InternalSimpleExpressions.g:745:10: this_INT_1= RULE_INT
                    {
                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_2); 

                    		current.merge(this_INT_1);
                        
                     
                        newLeafNode(this_INT_1, grammarAccess.getArgumentAccess().getINTTerminalRuleCall_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
1263311
public final EObject ruleAndExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_NotExpression_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:1025:28: ( (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* ) )
            // InternalSimpleAntlr.g:1026:1: (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* )
            {
            // InternalSimpleAntlr.g:1026:1: (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* )
            // InternalSimpleAntlr.g:1027:2: this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAndExpressionAccess().getNotExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_26);
            this_NotExpression_0=ruleNotExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_NotExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalSimpleAntlr.g:1038:1: ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==32) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // InternalSimpleAntlr.g:1038:2: () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) )
            	    {
            	    // InternalSimpleAntlr.g:1038:2: ()
            	    // InternalSimpleAntlr.g:1039:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getAndExpressionAccess().getAndExpressionLeftAction_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,32,FOLLOW_20); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getAndExpressionAccess().getAmpersandAmpersandKeyword_1_1());
            	          
            	    }
            	    // InternalSimpleAntlr.g:1051:1: ( (lv_right_3_0= ruleNotExpression ) )
            	    // InternalSimpleAntlr.g:1052:1: (lv_right_3_0= ruleNotExpression )
            	    {
            	    // InternalSimpleAntlr.g:1052:1: (lv_right_3_0= ruleNotExpression )
            	    // InternalSimpleAntlr.g:1053:3: lv_right_3_0= ruleNotExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAndExpressionAccess().getRightNotExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_26);
            	    lv_right_3_0=ruleNotExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"right",
            	              		lv_right_3_0, 
            	              		"org.eclipse.xtext.generator.parser.antlr.debug.SimpleAntlr.NotExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
1262831
public final EObject ruleAlternatives() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_Group_0 = null;

        EObject lv_groups_3_0 = null;


         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:514:28: ( (this_Group_0= ruleGroup ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )? ) )
            // InternalSimpleAntlr.g:515:1: (this_Group_0= ruleGroup ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )? )
            {
            // InternalSimpleAntlr.g:515:1: (this_Group_0= ruleGroup ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )? )
            // InternalSimpleAntlr.g:516:2: this_Group_0= ruleGroup ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAlternativesAccess().getGroupParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_15);
            this_Group_0=ruleGroup();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_Group_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalSimpleAntlr.g:527:1: ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==24) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // InternalSimpleAntlr.g:527:2: () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+
                    {
                    // InternalSimpleAntlr.g:527:2: ()
                    // InternalSimpleAntlr.g:528:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndAdd(
                                  grammarAccess.getAlternativesAccess().getAlternativesGroupsAction_1_0(),
                                  current);
                          
                    }

                    }

                    // InternalSimpleAntlr.g:536:2: (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+
                    int cnt8=0;
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==24) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // InternalSimpleAntlr.g:536:4: otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) )
                    	    {
                    	    otherlv_2=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getAlternativesAccess().getVerticalLineKeyword_1_1_0());
                    	          
                    	    }
                    	    // InternalSimpleAntlr.g:540:1: ( (lv_groups_3_0= ruleGroup ) )
                    	    // InternalSimpleAntlr.g:541:1: (lv_groups_3_0= ruleGroup )
                    	    {
                    	    // InternalSimpleAntlr.g:541:1: (lv_groups_3_0= ruleGroup )
                    	    // InternalSimpleAntlr.g:542:3: lv_groups_3_0= ruleGroup
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getAlternativesAccess().getGroupsGroupParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_15);
                    	    lv_groups_3_0=ruleGroup();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getAlternativesRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"groups",
                    	              		lv_groups_3_0, 
                    	              		"org.eclipse.xtext.generator.parser.antlr.debug.SimpleAntlr.Group");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt8 >= 1 ) break loop8;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(8, input);
                                throw eee;
                        }
                        cnt8++;
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
590781
public final EObject ruleXSetLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_elements_3_0 = null;

        EObject lv_elements_5_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:2323:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
            // InternalXbase.g:2324:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
            {
            // InternalXbase.g:2324:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
            // InternalXbase.g:2325:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
            {
            // InternalXbase.g:2325:3: ()
            // InternalXbase.g:2326:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,51,FOLLOW_32); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
              		
            }
            otherlv_2=(Token)match(input,52,FOLLOW_33); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
              		
            }
            // InternalXbase.g:2340:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( ((LA37_0>=RULE_STRING && LA37_0<=RULE_ID)||LA37_0==19||(LA37_0>=35 && LA37_0<=36)||LA37_0==41||LA37_0==49||(LA37_0>=51 && LA37_0<=52)||LA37_0==54||LA37_0==58||LA37_0==60||(LA37_0>=64 && LA37_0<=66)||(LA37_0>=69 && LA37_0<=81)||LA37_0==83) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // InternalXbase.g:2341:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    {
                    // InternalXbase.g:2341:4: ( (lv_elements_3_0= ruleXExpression ) )
                    // InternalXbase.g:2342:5: (lv_elements_3_0= ruleXExpression )
                    {
                    // InternalXbase.g:2342:5: (lv_elements_3_0= ruleXExpression )
                    // InternalXbase.g:2343:6: lv_elements_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                      					
                    }
                    pushFollow(FOLLOW_34);
                    lv_elements_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
                      						}
                      						add(
                      							current,
                      							"elements",
                      							lv_elements_3_0,
                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalXbase.g:2360:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    loop36:
                    do {
                        int alt36=2;
                        int LA36_0 = input.LA(1);

                        if ( (LA36_0==48) ) {
                            alt36=1;
                        }


                        switch (alt36) {
                    	case 1 :
                    	    // InternalXbase.g:2361:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                    	    {
                    	    otherlv_4=(Token)match(input,48,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                    	      				
                    	    }
                    	    // InternalXbase.g:2365:5: ( (lv_elements_5_0= ruleXExpression ) )
                    	    // InternalXbase.g:2366:6: (lv_elements_5_0= ruleXExpression )
                    	    {
                    	    // InternalXbase.g:2366:6: (lv_elements_5_0= ruleXExpression )
                    	    // InternalXbase.g:2367:7: lv_elements_5_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                    	      						
                    	    }
                    	    pushFollow(FOLLOW_34);
                    	    lv_elements_5_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      							if (current==null) {
                    	      								current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
                    	      							}
                    	      							add(
                    	      								current,
                    	      								"elements",
                    	      								lv_elements_5_0,
                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
                    	      							afterParserOrEnumRuleCall();
                    	      						
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop36;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
344800
public final EObject ruleXListLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_elements_3_0 = null;

        EObject lv_elements_5_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:2407:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
            // InternalXbase.g:2408:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            {
            // InternalXbase.g:2408:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            // InternalXbase.g:2409:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
            {
            // InternalXbase.g:2409:3: ()
            // InternalXbase.g:2410:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,51,FOLLOW_35); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
              		
            }
            otherlv_2=(Token)match(input,54,FOLLOW_36); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
              		
            }
            // InternalXbase.g:2424:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( ((LA39_0>=RULE_STRING && LA39_0<=RULE_ID)||LA39_0==19||(LA39_0>=35 && LA39_0<=36)||LA39_0==41||LA39_0==49||(LA39_0>=51 && LA39_0<=52)||LA39_0==54||LA39_0==58||LA39_0==60||(LA39_0>=64 && LA39_0<=66)||(LA39_0>=69 && LA39_0<=81)||LA39_0==83) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // InternalXbase.g:2425:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    {
                    // InternalXbase.g:2425:4: ( (lv_elements_3_0= ruleXExpression ) )
                    // InternalXbase.g:2426:5: (lv_elements_3_0= ruleXExpression )
                    {
                    // InternalXbase.g:2426:5: (lv_elements_3_0= ruleXExpression )
                    // InternalXbase.g:2427:6: lv_elements_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                      					
                    }
                    pushFollow(FOLLOW_37);
                    lv_elements_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                      						}
                      						add(
                      							current,
                      							"elements",
                      							lv_elements_3_0,
                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalXbase.g:2444:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    loop38:
                    do {
                        int alt38=2;
                        int LA38_0 = input.LA(1);

                        if ( (LA38_0==48) ) {
                            alt38=1;
                        }


                        switch (alt38) {
                    	case 1 :
                    	    // InternalXbase.g:2445:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                    	    {
                    	    otherlv_4=(Token)match(input,48,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                    	      				
                    	    }
                    	    // InternalXbase.g:2449:5: ( (lv_elements_5_0= ruleXExpression ) )
                    	    // InternalXbase.g:2450:6: (lv_elements_5_0= ruleXExpression )
                    	    {
                    	    // InternalXbase.g:2450:6: (lv_elements_5_0= ruleXExpression )
                    	    // InternalXbase.g:2451:7: lv_elements_5_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                    	      						
                    	    }
                    	    pushFollow(FOLLOW_37);
                    	    lv_elements_5_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      							if (current==null) {
                    	      								current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                    	      							}
                    	      							add(
                    	      								current,
                    	      								"elements",
                    	      								lv_elements_5_0,
                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
                    	      							afterParserOrEnumRuleCall();
                    	      						
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop38;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
709061
public final void ruleAssignableTerminal() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:933:2: ( ( ( rule__AssignableTerminal__Alternatives ) ) )
            // InternalXtext.g:934:2: ( ( rule__AssignableTerminal__Alternatives ) )
            {
            // InternalXtext.g:934:2: ( ( rule__AssignableTerminal__Alternatives ) )
            // InternalXtext.g:935:3: ( rule__AssignableTerminal__Alternatives )
            {
             before(grammarAccess.getAssignableTerminalAccess().getAlternatives()); 
            // InternalXtext.g:936:3: ( rule__AssignableTerminal__Alternatives )
            // InternalXtext.g:936:4: rule__AssignableTerminal__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AssignableTerminal__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getAssignableTerminalAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
850552
public final EObject ruleNegation() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_Atom_0 = null;

        EObject lv_value_3_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1889:2: ( (this_Atom_0= ruleAtom | ( () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) ) ) ) )
            // InternalXtext.g:1890:2: (this_Atom_0= ruleAtom | ( () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) ) ) )
            {
            // InternalXtext.g:1890:2: (this_Atom_0= ruleAtom | ( () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) ) ) )
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==RULE_ID||LA46_0==15||(LA46_0>=39 && LA46_0<=40)) ) {
                alt46=1;
            }
            else if ( (LA46_0==41) ) {
                alt46=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }
            switch (alt46) {
                case 1 :
                    // InternalXtext.g:1891:3: this_Atom_0= ruleAtom
                    {

                    			newCompositeNode(grammarAccess.getNegationAccess().getAtomParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_Atom_0=ruleAtom();

                    state._fsp--;


                    			current = this_Atom_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalXtext.g:1900:3: ( () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) ) )
                    {
                    // InternalXtext.g:1900:3: ( () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) ) )
                    // InternalXtext.g:1901:4: () otherlv_2= '!' ( (lv_value_3_0= ruleNegation ) )
                    {
                    // InternalXtext.g:1901:4: ()
                    // InternalXtext.g:1902:5: 
                    {

                    					current = forceCreateModelElement(
                    						grammarAccess.getNegationAccess().getNegationAction_1_0(),
                    						current);
                    				

                    }

                    otherlv_2=(Token)match(input,41,FollowSets000.FOLLOW_26); 

                    				newLeafNode(otherlv_2, grammarAccess.getNegationAccess().getExclamationMarkKeyword_1_1());
                    			
                    // InternalXtext.g:1912:4: ( (lv_value_3_0= ruleNegation ) )
                    // InternalXtext.g:1913:5: (lv_value_3_0= ruleNegation )
                    {
                    // InternalXtext.g:1913:5: (lv_value_3_0= ruleNegation )
                    // InternalXtext.g:1914:6: lv_value_3_0= ruleNegation
                    {

                    						newCompositeNode(grammarAccess.getNegationAccess().getValueNegationParserRuleCall_1_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_value_3_0=ruleNegation();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getNegationRule());
                    						}
                    						set(
                    							current,
                    							"value",
                    							lv_value_3_0,
                    							"org.eclipse.xtext.Xtext.Negation");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
154550
public final EObject ruleXExponentExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XUnaryOperation_0 = null;

        EObject lv_rightOperand_3_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:8879:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
            // InternalSARL.g:8880:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            {
            // InternalSARL.g:8880:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            // InternalSARL.g:8881:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXExponentExpressionAccess().getXUnaryOperationParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_86);
            this_XUnaryOperation_0=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current = this_XUnaryOperation_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalSARL.g:8889:3: ( ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            loop237:
            do {
                int alt237=2;
                int LA237_0 = input.LA(1);

                if ( (LA237_0==72) ) {
                    int LA237_2 = input.LA(2);

                    if ( (synpred14_InternalSARL()) ) {
                        alt237=1;
                    }


                }


                switch (alt237) {
            	case 1 :
            	    // InternalSARL.g:8890:4: ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    {
            	    // InternalSARL.g:8890:4: ( ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) ) )
            	    // InternalSARL.g:8891:5: ( ( () ( ( ruleOpExponent ) ) ) )=> ( () ( ( ruleOpExponent ) ) )
            	    {
            	    // InternalSARL.g:8901:5: ( () ( ( ruleOpExponent ) ) )
            	    // InternalSARL.g:8902:6: () ( ( ruleOpExponent ) )
            	    {
            	    // InternalSARL.g:8902:6: ()
            	    // InternalSARL.g:8903:7: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      							current = forceCreateModelElementAndSet(
            	      								grammarAccess.getXExponentExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	      								current);
            	      						
            	    }

            	    }

            	    // InternalSARL.g:8909:6: ( ( ruleOpExponent ) )
            	    // InternalSARL.g:8910:7: ( ruleOpExponent )
            	    {
            	    // InternalSARL.g:8910:7: ( ruleOpExponent )
            	    // InternalSARL.g:8911:8: ruleOpExponent
            	    {
            	    if ( state.backtracking==0 ) {

            	      								if (current==null) {
            	      									current = createModelElement(grammarAccess.getXExponentExpressionRule());
            	      								}
            	      							
            	    }
            	    if ( state.backtracking==0 ) {

            	      								newCompositeNode(grammarAccess.getXExponentExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
            	      							
            	    }
            	    pushFollow(FOLLOW_45);
            	    ruleOpExponent();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      								afterParserOrEnumRuleCall();
            	      							
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // InternalSARL.g:8927:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    // InternalSARL.g:8928:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    {
            	    // InternalSARL.g:8928:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    // InternalSARL.g:8929:6: lv_rightOperand_3_0= ruleXUnaryOperation
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXExponentExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_86);
            	    lv_rightOperand_3_0=ruleXUnaryOperation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXExponentExpressionRule());
            	      						}
            	      						set(
            	      							current,
            	      							"rightOperand",
            	      							lv_rightOperand_3_0,
            	      							"io.sarl.lang.SARL.XUnaryOperation");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop237;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
863445
public final EObject ruleGroup() throws RecognitionException {
        EObject current = null;

        EObject this_AbstractToken_0 = null;

        EObject lv_elements_2_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1192:2: ( (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? ) )
            // InternalXtext.g:1193:2: (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? )
            {
            // InternalXtext.g:1193:2: (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? )
            // InternalXtext.g:1194:3: this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )?
            {

            			newCompositeNode(grammarAccess.getGroupAccess().getAbstractTokenParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_29);
            this_AbstractToken_0=ruleAbstractToken();

            state._fsp--;


            			current = this_AbstractToken_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:1202:3: ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( ((LA32_0>=RULE_STRING && LA32_0<=RULE_ID)||LA32_0==15||LA32_0==34||(LA32_0>=39 && LA32_0<=40)||(LA32_0>=42 && LA32_0<=43)) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // InternalXtext.g:1203:4: () ( (lv_elements_2_0= ruleAbstractToken ) )+
                    {
                    // InternalXtext.g:1203:4: ()
                    // InternalXtext.g:1204:5: 
                    {

                    					current = forceCreateModelElementAndAdd(
                    						grammarAccess.getGroupAccess().getGroupElementsAction_1_0(),
                    						current);
                    				

                    }

                    // InternalXtext.g:1210:4: ( (lv_elements_2_0= ruleAbstractToken ) )+
                    int cnt31=0;
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( ((LA31_0>=RULE_STRING && LA31_0<=RULE_ID)||LA31_0==15||LA31_0==34||(LA31_0>=39 && LA31_0<=40)||(LA31_0>=42 && LA31_0<=43)) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // InternalXtext.g:1211:5: (lv_elements_2_0= ruleAbstractToken )
                    	    {
                    	    // InternalXtext.g:1211:5: (lv_elements_2_0= ruleAbstractToken )
                    	    // InternalXtext.g:1212:6: lv_elements_2_0= ruleAbstractToken
                    	    {

                    	    						newCompositeNode(grammarAccess.getGroupAccess().getElementsAbstractTokenParserRuleCall_1_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_29);
                    	    lv_elements_2_0=ruleAbstractToken();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getGroupRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"elements",
                    	    							lv_elements_2_0,
                    	    							"org.eclipse.xtext.Xtext.AbstractToken");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt31 >= 1 ) break loop31;
                                EarlyExitException eee =
                                    new EarlyExitException(31, input);
                                throw eee;
                        }
                        cnt31++;
                    } while (true);


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1032264
public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalSARL.g:13223:2: ( (kw= '++' | kw= '--' ) )
            // InternalSARL.g:13224:2: (kw= '++' | kw= '--' )
            {
            // InternalSARL.g:13224:2: (kw= '++' | kw= '--' )
            int alt315=2;
            int LA315_0 = input.LA(1);

            if ( (LA315_0==125) ) {
                alt315=1;
            }
            else if ( (LA315_0==126) ) {
                alt315=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 315, 0, input);

                throw nvae;
            }
            switch (alt315) {
                case 1 :
                    // InternalSARL.g:13225:3: kw= '++'
                    {
                    kw=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:13231:3: kw= '--'
                    {
                    kw=(Token)match(input,126,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1028679
public final EObject ruleXNumberLiteral() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_1_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:5368:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
            // InternalPureXbase.g:5369:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
            {
            // InternalPureXbase.g:5369:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
            // InternalPureXbase.g:5370:3: () ( (lv_value_1_0= ruleNumber ) )
            {
            // InternalPureXbase.g:5370:3: ()
            // InternalPureXbase.g:5371:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
              					current);
              			
            }

            }

            // InternalPureXbase.g:5377:3: ( (lv_value_1_0= ruleNumber ) )
            // InternalPureXbase.g:5378:4: (lv_value_1_0= ruleNumber )
            {
            // InternalPureXbase.g:5378:4: (lv_value_1_0= ruleNumber )
            // InternalPureXbase.g:5379:5: lv_value_1_0= ruleNumber
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_value_1_0=ruleNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
              					}
              					set(
              						current,
              						"value",
              						lv_value_1_0,
              						"org.eclipse.xtext.xbase.Xbase.Number");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1356866
public final void mLITERAL() throws RecognitionException {
		try {
			int _type = LITERAL;
			int _channel = DEFAULT_TOKEN_CHANNEL;
			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:5: ( ( IdentifierPart | MISC | EscapeSequence | DOT )+ )
			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:7: ( IdentifierPart | MISC | EscapeSequence | DOT )+
			{
			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:7: ( IdentifierPart | MISC | EscapeSequence | DOT )+
			int cnt3=0;
			loop3:
			while (true) {
				int alt3=5;
				int LA3_0 = input.LA(1);
				if ( ((LA3_0 >= '\u0000' && LA3_0 <= '\b')||(LA3_0 >= '\u000E' && LA3_0 <= '\u001B')||LA3_0=='$'||(LA3_0 >= '0' && LA3_0 <= '9')||(LA3_0 >= 'A' && LA3_0 <= 'Z')||LA3_0=='_'||(LA3_0 >= 'a' && LA3_0 <= 'z')||(LA3_0 >= '\u007F' && LA3_0 <= '\u009F')||(LA3_0 >= '\u00A2' && LA3_0 <= '\u00A5')||LA3_0=='\u00AA'||LA3_0=='\u00AD'||LA3_0=='\u00B5'||LA3_0=='\u00BA'||(LA3_0 >= '\u00C0' && LA3_0 <= '\u00D6')||(LA3_0 >= '\u00D8' && LA3_0 <= '\u00F6')||(LA3_0 >= '\u00F8' && LA3_0 <= '\u0236')||(LA3_0 >= '\u0250' && LA3_0 <= '\u02C1')||(LA3_0 >= '\u02C6' && LA3_0 <= '\u02D1')||(LA3_0 >= '\u02E0' && LA3_0 <= '\u02E4')||LA3_0=='\u02EE'||(LA3_0 >= '\u0300' && LA3_0 <= '\u0357')||(LA3_0 >= '\u035D' && LA3_0 <= '\u036F')||LA3_0=='\u037A'||LA3_0=='\u0386'||(LA3_0 >= '\u0388' && LA3_0 <= '\u038A')||LA3_0=='\u038C'||(LA3_0 >= '\u038E' && LA3_0 <= '\u03A1')||(LA3_0 >= '\u03A3' && LA3_0 <= '\u03CE')||(LA3_0 >= '\u03D0' && LA3_0 <= '\u03F5')||(LA3_0 >= '\u03F7' && LA3_0 <= '\u03FB')||(LA3_0 >= '\u0400' && LA3_0 <= '\u0481')||(LA3_0 >= '\u0483' && LA3_0 <= '\u0486')||(LA3_0 >= '\u048A' && LA3_0 <= '\u04CE')||(LA3_0 >= '\u04D0' && LA3_0 <= '\u04F5')||(LA3_0 >= '\u04F8' && LA3_0 <= '\u04F9')||(LA3_0 >= '\u0500' && LA3_0 <= '\u050F')||(LA3_0 >= '\u0531' && LA3_0 <= '\u0556')||LA3_0=='\u0559'||(LA3_0 >= '\u0561' && LA3_0 <= '\u0587')||(LA3_0 >= '\u0591' && LA3_0 <= '\u05A1')||(LA3_0 >= '\u05A3' && LA3_0 <= '\u05B9')||(LA3_0 >= '\u05BB' && LA3_0 <= '\u05BD')||LA3_0=='\u05BF'||(LA3_0 >= '\u05C1' && LA3_0 <= '\u05C2')||LA3_0=='\u05C4'||(LA3_0 >= '\u05D0' && LA3_0 <= '\u05EA')||(LA3_0 >= '\u05F0' && LA3_0 <= '\u05F2')||(LA3_0 >= '\u0600' && LA3_0 <= '\u0603')||(LA3_0 >= '\u0610' && LA3_0 <= '\u0615')||(LA3_0 >= '\u0621' && LA3_0 <= '\u063A')||(LA3_0 >= '\u0640' && LA3_0 <= '\u0658')||(LA3_0 >= '\u0660' && LA3_0 <= '\u0669')||(LA3_0 >= '\u066E' && LA3_0 <= '\u06D3')||(LA3_0 >= '\u06D5' && LA3_0 <= '\u06DD')||(LA3_0 >= '\u06DF' && LA3_0 <= '\u06E8')||(LA3_0 >= '\u06EA' && LA3_0 <= '\u06FC')||LA3_0=='\u06FF'||(LA3_0 >= '\u070F' && LA3_0 <= '\u074A')||(LA3_0 >= '\u074D' && LA3_0 <= '\u074F')||(LA3_0 >= '\u0780' && LA3_0 <= '\u07B1')||(LA3_0 >= '\u0901' && LA3_0 <= '\u0939')||(LA3_0 >= '\u093C' && LA3_0 <= '\u094D')||(LA3_0 >= '\u0950' && LA3_0 <= '\u0954')||(LA3_0 >= '\u0958' && LA3_0 <= '\u0963')||(LA3_0 >= '\u0966' && LA3_0 <= '\u096F')||(LA3_0 >= '\u0981' && LA3_0 <= '\u0983')||(LA3_0 >= '\u0985' && LA3_0 <= '\u098C')||(LA3_0 >= '\u098F' && LA3_0 <= '\u0990')||(LA3_0 >= '\u0993' && LA3_0 <= '\u09A8')||(LA3_0 >= '\u09AA' && LA3_0 <= '\u09B0')||LA3_0=='\u09B2'||(LA3_0 >= '\u09B6' && LA3_0 <= '\u09B9')||(LA3_0 >= '\u09BC' && LA3_0 <= '\u09C4')||(LA3_0 >= '\u09C7' && LA3_0 <= '\u09C8')||(LA3_0 >= '\u09CB' && LA3_0 <= '\u09CD')||LA3_0=='\u09D7'||(LA3_0 >= '\u09DC' && LA3_0 <= '\u09DD')||(LA3_0 >= '\u09DF' && LA3_0 <= '\u09E3')||(LA3_0 >= '\u09E6' && LA3_0 <= '\u09F3')||(LA3_0 >= '\u0A01' && LA3_0 <= '\u0A03')||(LA3_0 >= '\u0A05' && LA3_0 <= '\u0A0A')||(LA3_0 >= '\u0A0F' && LA3_0 <= '\u0A10')||(LA3_0 >= '\u0A13' && LA3_0 <= '\u0A28')||(LA3_0 >= '\u0A2A' && LA3_0 <= '\u0A30')||(LA3_0 >= '\u0A32' && LA3_0 <= '\u0A33')||(LA3_0 >= '\u0A35' && LA3_0 <= '\u0A36')||(LA3_0 >= '\u0A38' && LA3_0 <= '\u0A39')||LA3_0=='\u0A3C'||(LA3_0 >= '\u0A3E' && LA3_0 <= '\u0A42')||(LA3_0 >= '\u0A47' && LA3_0 <= '\u0A48')||(LA3_0 >= '\u0A4B' && LA3_0 <= '\u0A4D')||(LA3_0 >= '\u0A59' && LA3_0 <= '\u0A5C')||LA3_0=='\u0A5E'||(LA3_0 >= '\u0A66' && LA3_0 <= '\u0A74')||(LA3_0 >= '\u0A81' && LA3_0 <= '\u0A83')||(LA3_0 >= '\u0A85' && LA3_0 <= '\u0A8D')||(LA3_0 >= '\u0A8F' && LA3_0 <= '\u0A91')||(LA3_0 >= '\u0A93' && LA3_0 <= '\u0AA8')||(LA3_0 >= '\u0AAA' && LA3_0 <= '\u0AB0')||(LA3_0 >= '\u0AB2' && LA3_0 <= '\u0AB3')||(LA3_0 >= '\u0AB5' && LA3_0 <= '\u0AB9')||(LA3_0 >= '\u0ABC' && LA3_0 <= '\u0AC5')||(LA3_0 >= '\u0AC7' && LA3_0 <= '\u0AC9')||(LA3_0 >= '\u0ACB' && LA3_0 <= '\u0ACD')||LA3_0=='\u0AD0'||(LA3_0 >= '\u0AE0' && LA3_0 <= '\u0AE3')||(LA3_0 >= '\u0AE6' && LA3_0 <= '\u0AEF')||LA3_0=='\u0AF1'||(LA3_0 >= '\u0B01' && LA3_0 <= '\u0B03')||(LA3_0 >= '\u0B05' && LA3_0 <= '\u0B0C')||(LA3_0 >= '\u0B0F' && LA3_0 <= '\u0B10')||(LA3_0 >= '\u0B13' && LA3_0 <= '\u0B28')||(LA3_0 >= '\u0B2A' && LA3_0 <= '\u0B30')||(LA3_0 >= '\u0B32' && LA3_0 <= '\u0B33')||(LA3_0 >= '\u0B35' && LA3_0 <= '\u0B39')||(LA3_0 >= '\u0B3C' && LA3_0 <= '\u0B43')||(LA3_0 >= '\u0B47' && LA3_0 <= '\u0B48')||(LA3_0 >= '\u0B4B' && LA3_0 <= '\u0B4D')||(LA3_0 >= '\u0B56' && LA3_0 <= '\u0B57')||(LA3_0 >= '\u0B5C' && LA3_0 <= '\u0B5D')||(LA3_0 >= '\u0B5F' && LA3_0 <= '\u0B61')||(LA3_0 >= '\u0B66' && LA3_0 <= '\u0B6F')||LA3_0=='\u0B71'||(LA3_0 >= '\u0B82' && LA3_0 <= '\u0B83')||(LA3_0 >= '\u0B85' && LA3_0 <= '\u0B8A')||(LA3_0 >= '\u0B8E' && LA3_0 <= '\u0B90')||(LA3_0 >= '\u0B92' && LA3_0 <= '\u0B95')||(LA3_0 >= '\u0B99' && LA3_0 <= '\u0B9A')||LA3_0=='\u0B9C'||(LA3_0 >= '\u0B9E' && LA3_0 <= '\u0B9F')||(LA3_0 >= '\u0BA3' && LA3_0 <= '\u0BA4')||(LA3_0 >= '\u0BA8' && LA3_0 <= '\u0BAA')||(LA3_0 >= '\u0BAE' && LA3_0 <= '\u0BB5')||(LA3_0 >= '\u0BB7' && LA3_0 <= '\u0BB9')||(LA3_0 >= '\u0BBE' && LA3_0 <= '\u0BC2')||(LA3_0 >= '\u0BC6' && LA3_0 <= '\u0BC8')||(LA3_0 >= '\u0BCA' && LA3_0 <= '\u0BCD')||LA3_0=='\u0BD7'||(LA3_0 >= '\u0BE7' && LA3_0 <= '\u0BEF')||LA3_0=='\u0BF9'||(LA3_0 >= '\u0C01' && LA3_0 <= '\u0C03')||(LA3_0 >= '\u0C05' && LA3_0 <= '\u0C0C')||(LA3_0 >= '\u0C0E' && LA3_0 <= '\u0C10')||(LA3_0 >= '\u0C12' && LA3_0 <= '\u0C28')||(LA3_0 >= '\u0C2A' && LA3_0 <= '\u0C33')||(LA3_0 >= '\u0C35' && LA3_0 <= '\u0C39')||(LA3_0 >= '\u0C3E' && LA3_0 <= '\u0C44')||(LA3_0 >= '\u0C46' && LA3_0 <= '\u0C48')||(LA3_0 >= '\u0C4A' && LA3_0 <= '\u0C4D')||(LA3_0 >= '\u0C55' && LA3_0 <= '\u0C56')||(LA3_0 >= '\u0C60' && LA3_0 <= '\u0C61')||(LA3_0 >= '\u0C66' && LA3_0 <= '\u0C6F')||(LA3_0 >= '\u0C82' && LA3_0 <= '\u0C83')||(LA3_0 >= '\u0C85' && LA3_0 <= '\u0C8C')||(LA3_0 >= '\u0C8E' && LA3_0 <= '\u0C90')||(LA3_0 >= '\u0C92' && LA3_0 <= '\u0CA8')||(LA3_0 >= '\u0CAA' && LA3_0 <= '\u0CB3')||(LA3_0 >= '\u0CB5' && LA3_0 <= '\u0CB9')||(LA3_0 >= '\u0CBC' && LA3_0 <= '\u0CC4')||(LA3_0 >= '\u0CC6' && LA3_0 <= '\u0CC8')||(LA3_0 >= '\u0CCA' && LA3_0 <= '\u0CCD')||(LA3_0 >= '\u0CD5' && LA3_0 <= '\u0CD6')||LA3_0=='\u0CDE'||(LA3_0 >= '\u0CE0' && LA3_0 <= '\u0CE1')||(LA3_0 >= '\u0CE6' && LA3_0 <= '\u0CEF')||(LA3_0 >= '\u0D02' && LA3_0 <= '\u0D03')||(LA3_0 >= '\u0D05' && LA3_0 <= '\u0D0C')||(LA3_0 >= '\u0D0E' && LA3_0 <= '\u0D10')||(LA3_0 >= '\u0D12' && LA3_0 <= '\u0D28')||(LA3_0 >= '\u0D2A' && LA3_0 <= '\u0D39')||(LA3_0 >= '\u0D3E' && LA3_0 <= '\u0D43')||(LA3_0 >= '\u0D46' && LA3_0 <= '\u0D48')||(LA3_0 >= '\u0D4A' && LA3_0 <= '\u0D4D')||LA3_0=='\u0D57'||(LA3_0 >= '\u0D60' && LA3_0 <= '\u0D61')||(LA3_0 >= '\u0D66' && LA3_0 <= '\u0D6F')||(LA3_0 >= '\u0D82' && LA3_0 <= '\u0D83')||(LA3_0 >= '\u0D85' && LA3_0 <= '\u0D96')||(LA3_0 >= '\u0D9A' && LA3_0 <= '\u0DB1')||(LA3_0 >= '\u0DB3' && LA3_0 <= '\u0DBB')||LA3_0=='\u0DBD'||(LA3_0 >= '\u0DC0' && LA3_0 <= '\u0DC6')||LA3_0=='\u0DCA'||(LA3_0 >= '\u0DCF' && LA3_0 <= '\u0DD4')||LA3_0=='\u0DD6'||(LA3_0 >= '\u0DD8' && LA3_0 <= '\u0DDF')||(LA3_0 >= '\u0DF2' && LA3_0 <= '\u0DF3')||(LA3_0 >= '\u0E01' && LA3_0 <= '\u0E3A')||(LA3_0 >= '\u0E3F' && LA3_0 <= '\u0E4E')||(LA3_0 >= '\u0E50' && LA3_0 <= '\u0E59')||(LA3_0 >= '\u0E81' && LA3_0 <= '\u0E82')||LA3_0=='\u0E84'||(LA3_0 >= '\u0E87' && LA3_0 <= '\u0E88')||LA3_0=='\u0E8A'||LA3_0=='\u0E8D'||(LA3_0 >= '\u0E94' && LA3_0 <= '\u0E97')||(LA3_0 >= '\u0E99' && LA3_0 <= '\u0E9F')||(LA3_0 >= '\u0EA1' && LA3_0 <= '\u0EA3')||LA3_0=='\u0EA5'||LA3_0=='\u0EA7'||(LA3_0 >= '\u0EAA' && LA3_0 <= '\u0EAB')||(LA3_0 >= '\u0EAD' && LA3_0 <= '\u0EB9')||(LA3_0 >= '\u0EBB' && LA3_0 <= '\u0EBD')||(LA3_0 >= '\u0EC0' && LA3_0 <= '\u0EC4')||LA3_0=='\u0EC6'||(LA3_0 >= '\u0EC8' && LA3_0 <= '\u0ECD')||(LA3_0 >= '\u0ED0' && LA3_0 <= '\u0ED9')||(LA3_0 >= '\u0EDC' && LA3_0 <= '\u0EDD')||LA3_0=='\u0F00'||(LA3_0 >= '\u0F18' && LA3_0 <= '\u0F19')||(LA3_0 >= '\u0F20' && LA3_0 <= '\u0F29')||LA3_0=='\u0F35'||LA3_0=='\u0F37'||LA3_0=='\u0F39'||(LA3_0 >= '\u0F3E' && LA3_0 <= '\u0F47')||(LA3_0 >= '\u0F49' && LA3_0 <= '\u0F6A')||(LA3_0 >= '\u0F71' && LA3_0 <= '\u0F84')||(LA3_0 >= '\u0F86' && LA3_0 <= '\u0F8B')||(LA3_0 >= '\u0F90' && LA3_0 <= '\u0F97')||(LA3_0 >= '\u0F99' && LA3_0 <= '\u0FBC')||LA3_0=='\u0FC6'||(LA3_0 >= '\u1000' && LA3_0 <= '\u1021')||(LA3_0 >= '\u1023' && LA3_0 <= '\u1027')||(LA3_0 >= '\u1029' && LA3_0 <= '\u102A')||(LA3_0 >= '\u102C' && LA3_0 <= '\u1032')||(LA3_0 >= '\u1036' && LA3_0 <= '\u1039')||(LA3_0 >= '\u1040' && LA3_0 <= '\u1049')||(LA3_0 >= '\u1050' && LA3_0 <= '\u1059')||(LA3_0 >= '\u10A0' && LA3_0 <= '\u10C5')||(LA3_0 >= '\u10D0' && LA3_0 <= '\u10F8')||(LA3_0 >= '\u1100' && LA3_0 <= '\u1159')||(LA3_0 >= '\u115F' && LA3_0 <= '\u11A2')||(LA3_0 >= '\u11A8' && LA3_0 <= '\u11F9')||(LA3_0 >= '\u1200' && LA3_0 <= '\u1206')||(LA3_0 >= '\u1208' && LA3_0 <= '\u1246')||LA3_0=='\u1248'||(LA3_0 >= '\u124A' && LA3_0 <= '\u124D')||(LA3_0 >= '\u1250' && LA3_0 <= '\u1256')||LA3_0=='\u1258'||(LA3_0 >= '\u125A' && LA3_0 <= '\u125D')||(LA3_0 >= '\u1260' && LA3_0 <= '\u1286')||LA3_0=='\u1288'||(LA3_0 >= '\u128A' && LA3_0 <= '\u128D')||(LA3_0 >= '\u1290' && LA3_0 <= '\u12AE')||LA3_0=='\u12B0'||(LA3_0 >= '\u12B2' && LA3_0 <= '\u12B5')||(LA3_0 >= '\u12B8' && LA3_0 <= '\u12BE')||LA3_0=='\u12C0'||(LA3_0 >= '\u12C2' && LA3_0 <= '\u12C5')||(LA3_0 >= '\u12C8' && LA3_0 <= '\u12CE')||(LA3_0 >= '\u12D0' && LA3_0 <= '\u12D6')||(LA3_0 >= '\u12D8' && LA3_0 <= '\u12EE')||(LA3_0 >= '\u12F0' && LA3_0 <= '\u130E')||LA3_0=='\u1310'||(LA3_0 >= '\u1312' && LA3_0 <= '\u1315')||(LA3_0 >= '\u1318' && LA3_0 <= '\u131E')||(LA3_0 >= '\u1320' && LA3_0 <= '\u1346')||(LA3_0 >= '\u1348' && LA3_0 <= '\u135A')||(LA3_0 >= '\u1369' && LA3_0 <= '\u1371')||(LA3_0 >= '\u13A0' && LA3_0 <= '\u13F4')||(LA3_0 >= '\u1401' && LA3_0 <= '\u166C')||(LA3_0 >= '\u166F' && LA3_0 <= '\u1676')||(LA3_0 >= '\u1681' && LA3_0 <= '\u169A')||(LA3_0 >= '\u16A0' && LA3_0 <= '\u16EA')||(LA3_0 >= '\u16EE' && LA3_0 <= '\u16F0')||(LA3_0 >= '\u1700' && LA3_0 <= '\u170C')||(LA3_0 >= '\u170E' && LA3_0 <= '\u1714')||(LA3_0 >= '\u1720' && LA3_0 <= '\u1734')||(LA3_0 >= '\u1740' && LA3_0 <= '\u1753')||(LA3_0 >= '\u1760' && LA3_0 <= '\u176C')||(LA3_0 >= '\u176E' && LA3_0 <= '\u1770')||(LA3_0 >= '\u1772' && LA3_0 <= '\u1773')||(LA3_0 >= '\u1780' && LA3_0 <= '\u17D3')||LA3_0=='\u17D7'||(LA3_0 >= '\u17DB' && LA3_0 <= '\u17DD')||(LA3_0 >= '\u17E0' && LA3_0 <= '\u17E9')||(LA3_0 >= '\u180B' && LA3_0 <= '\u180D')||(LA3_0 >= '\u1810' && LA3_0 <= '\u1819')||(LA3_0 >= '\u1820' && LA3_0 <= '\u1877')||(LA3_0 >= '\u1880' && LA3_0 <= '\u18A9')||(LA3_0 >= '\u1900' && LA3_0 <= '\u191C')||(LA3_0 >= '\u1920' && LA3_0 <= '\u192B')||(LA3_0 >= '\u1930' && LA3_0 <= '\u193B')||(LA3_0 >= '\u1946' && LA3_0 <= '\u196D')||(LA3_0 >= '\u1970' && LA3_0 <= '\u1974')||(LA3_0 >= '\u1D00' && LA3_0 <= '\u1D6B')||(LA3_0 >= '\u1E00' && LA3_0 <= '\u1E9B')||(LA3_0 >= '\u1EA0' && LA3_0 <= '\u1EF9')||(LA3_0 >= '\u1F00' && LA3_0 <= '\u1F15')||(LA3_0 >= '\u1F18' && LA3_0 <= '\u1F1D')||(LA3_0 >= '\u1F20' && LA3_0 <= '\u1F45')||(LA3_0 >= '\u1F48' && LA3_0 <= '\u1F4D')||(LA3_0 >= '\u1F50' && LA3_0 <= '\u1F57')||LA3_0=='\u1F59'||LA3_0=='\u1F5B'||LA3_0=='\u1F5D'||(LA3_0 >= '\u1F5F' && LA3_0 <= '\u1F7D')||(LA3_0 >= '\u1F80' && LA3_0 <= '\u1FB4')||(LA3_0 >= '\u1FB6' && LA3_0 <= '\u1FBC')||LA3_0=='\u1FBE'||(LA3_0 >= '\u1FC2' && LA3_0 <= '\u1FC4')||(LA3_0 >= '\u1FC6' && LA3_0 <= '\u1FCC')||(LA3_0 >= '\u1FD0' && LA3_0 <= '\u1FD3')||(LA3_0 >= '\u1FD6' && LA3_0 <= '\u1FDB')||(LA3_0 >= '\u1FE0' && LA3_0 <= '\u1FEC')||(LA3_0 >= '\u1FF2' && LA3_0 <= '\u1FF4')||(LA3_0 >= '\u1FF6' && LA3_0 <= '\u1FFC')||(LA3_0 >= '\u200C' && LA3_0 <= '\u200F')||(LA3_0 >= '\u202A' && LA3_0 <= '\u202E')||(LA3_0 >= '\u203F' && LA3_0 <= '\u2040')||LA3_0=='\u2054'||(LA3_0 >= '\u2060' && LA3_0 <= '\u2063')||(LA3_0 >= '\u206A' && LA3_0 <= '\u206F')||LA3_0=='\u2071'||LA3_0=='\u207F'||(LA3_0 >= '\u20A0' && LA3_0 <= '\u20B1')||(LA3_0 >= '\u20D0' && LA3_0 <= '\u20DC')||LA3_0=='\u20E1'||(LA3_0 >= '\u20E5' && LA3_0 <= '\u20EA')||LA3_0=='\u2102'||LA3_0=='\u2107'||(LA3_0 >= '\u210A' && LA3_0 <= '\u2113')||LA3_0=='\u2115'||(LA3_0 >= '\u2119' && LA3_0 <= '\u211D')||LA3_0=='\u2124'||LA3_0=='\u2126'||LA3_0=='\u2128'||(LA3_0 >= '\u212A' && LA3_0 <= '\u212D')||(LA3_0 >= '\u212F' && LA3_0 <= '\u2131')||(LA3_0 >= '\u2133' && LA3_0 <= '\u2139')||(LA3_0 >= '\u213D' && LA3_0 <= '\u213F')||(LA3_0 >= '\u2145' && LA3_0 <= '\u2149')||(LA3_0 >= '\u2160' && LA3_0 <= '\u2183')||LA3_0=='\u3000'||(LA3_0 >= '\u3005' && LA3_0 <= '\u3007')||(LA3_0 >= '\u3021' && LA3_0 <= '\u302F')||(LA3_0 >= '\u3031' && LA3_0 <= '\u3035')||(LA3_0 >= '\u3038' && LA3_0 <= '\u303C')||(LA3_0 >= '\u3041' && LA3_0 <= '\u3096')||(LA3_0 >= '\u3099' && LA3_0 <= '\u309A')||(LA3_0 >= '\u309D' && LA3_0 <= '\u309F')||(LA3_0 >= '\u30A1' && LA3_0 <= '\u30FF')||(LA3_0 >= '\u3105' && LA3_0 <= '\u312C')||(LA3_0 >= '\u3131' && LA3_0 <= '\u318E')||(LA3_0 >= '\u31A0' && LA3_0 <= '\u31B7')||(LA3_0 >= '\u31F0' && LA3_0 <= '\u31FF')||(LA3_0 >= '\u3400' && LA3_0 <= '\u4DB5')||(LA3_0 >= '\u4E00' && LA3_0 <= '\u9FA5')||(LA3_0 >= '\uA000' && LA3_0 <= '\uA48C')||(LA3_0 >= '\uAC00' && LA3_0 <= '\uD7A3')||(LA3_0 >= '\uF900' && LA3_0 <= '\uFA2D')||(LA3_0 >= '\uFA30' && LA3_0 <= '\uFA6A')||(LA3_0 >= '\uFB00' && LA3_0 <= '\uFB06')||(LA3_0 >= '\uFB13' && LA3_0 <= '\uFB17')||(LA3_0 >= '\uFB1D' && LA3_0 <= '\uFB28')||(LA3_0 >= '\uFB2A' && LA3_0 <= '\uFB36')||(LA3_0 >= '\uFB38' && LA3_0 <= '\uFB3C')||LA3_0=='\uFB3E'||(LA3_0 >= '\uFB40' && LA3_0 <= '\uFB41')||(LA3_0 >= '\uFB43' && LA3_0 <= '\uFB44')||(LA3_0 >= '\uFB46' && LA3_0 <= '\uFBB1')||(LA3_0 >= '\uFBD3' && LA3_0 <= '\uFD3D')||(LA3_0 >= '\uFD50' && LA3_0 <= '\uFD8F')||(LA3_0 >= '\uFD92' && LA3_0 <= '\uFDC7')||(LA3_0 >= '\uFDF0' && LA3_0 <= '\uFDFC')||(LA3_0 >= '\uFE00' && LA3_0 <= '\uFE0F')||(LA3_0 >= '\uFE20' && LA3_0 <= '\uFE23')||(LA3_0 >= '\uFE33' && LA3_0 <= '\uFE34')||(LA3_0 >= '\uFE4D' && LA3_0 <= '\uFE4F')||LA3_0=='\uFE69'||(LA3_0 >= '\uFE70' && LA3_0 <= '\uFE74')||(LA3_0 >= '\uFE76' && LA3_0 <= '\uFEFC')||LA3_0=='\uFEFF'||LA3_0=='\uFF04'||(LA3_0 >= '\uFF10' && LA3_0 <= '\uFF19')||(LA3_0 >= '\uFF21' && LA3_0 <= '\uFF3A')||LA3_0=='\uFF3F'||(LA3_0 >= '\uFF41' && LA3_0 <= '\uFF5A')||(LA3_0 >= '\uFF65' && LA3_0 <= '\uFFBE')||(LA3_0 >= '\uFFC2' && LA3_0 <= '\uFFC7')||(LA3_0 >= '\uFFCA' && LA3_0 <= '\uFFCF')||(LA3_0 >= '\uFFD2' && LA3_0 <= '\uFFD7')||(LA3_0 >= '\uFFDA' && LA3_0 <= '\uFFDC')||(LA3_0 >= '\uFFE0' && LA3_0 <= '\uFFE1')||(LA3_0 >= '\uFFE5' && LA3_0 <= '\uFFE6')||(LA3_0 >= '\uFFF9' && LA3_0 <= '\uFFFB')) ) {
					alt3=1;
				}
				else if ( ((LA3_0 >= '!' && LA3_0 <= '#')||(LA3_0 >= '%' && LA3_0 <= '-')||LA3_0=='/'||(LA3_0 >= ';' && LA3_0 <= '<')||(LA3_0 >= '>' && LA3_0 <= '@')||LA3_0=='^'||LA3_0=='|'||LA3_0=='~') ) {
					alt3=2;
				}
				else if ( (LA3_0=='\\') ) {
					alt3=3;
				}
				else if ( (LA3_0=='.') ) {
					alt3=4;
				}

				switch (alt3) {
				case 1 :
					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:8: IdentifierPart
					{
					mIdentifierPart(); if (state.failed) return;

					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:23: MISC
					{
					mMISC(); if (state.failed) return;

					}
					break;
				case 3 :
					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:28: EscapeSequence
					{
					mEscapeSequence(); if (state.failed) return;

					}
					break;
				case 4 :
					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:325:43: DOT
					{
					mDOT(); if (state.failed) return;

					}
					break;

				default :
					if ( cnt3 >= 1 ) break loop3;
					if (state.backtracking>0) {state.failed=true; return;}
					EarlyExitException eee = new EarlyExitException(3, input);
					throw eee;
				}
				cnt3++;
			}

			}

			state.type = _type;
			state.channel = _channel;
		}
		finally {
			// do for sure before leaving
		}
	}
973037
public final EObject ruleTerminalRuleCall() throws RecognitionException {
        EObject current = null;


        	enterRule();

        try {
            // InternalXtext.g:2059:2: ( ( ( ruleRuleID ) ) )
            // InternalXtext.g:2060:2: ( ( ruleRuleID ) )
            {
            // InternalXtext.g:2060:2: ( ( ruleRuleID ) )
            // InternalXtext.g:2061:3: ( ruleRuleID )
            {
            // InternalXtext.g:2061:3: ( ruleRuleID )
            // InternalXtext.g:2062:4: ruleRuleID
            {

            				if (current==null) {
            					current = createModelElement(grammarAccess.getTerminalRuleCallRule());
            				}
            			

            				newCompositeNode(grammarAccess.getTerminalRuleCallAccess().getRuleAbstractRuleCrossReference_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRuleID();

            state._fsp--;


            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
458115
public final void ruleAbstractToken() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:433:2: ( ( ( rule__AbstractToken__Alternatives ) ) )
            // InternalXtext.g:434:2: ( ( rule__AbstractToken__Alternatives ) )
            {
            // InternalXtext.g:434:2: ( ( rule__AbstractToken__Alternatives ) )
            // InternalXtext.g:435:3: ( rule__AbstractToken__Alternatives )
            {
             before(grammarAccess.getAbstractTokenAccess().getAlternatives()); 
            // InternalXtext.g:436:3: ( rule__AbstractToken__Alternatives )
            // InternalXtext.g:436:4: rule__AbstractToken__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbstractToken__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getAbstractTokenAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
1054414
public final EObject ruleAbstractRule() throws RecognitionException {
        EObject current = null;

        EObject this_ParserRule_0 = null;

        EObject this_TerminalRule_1 = null;

        EObject this_EnumRule_2 = null;



        	enterRule();

        try {
            // InternalXtext.g:311:2: ( (this_ParserRule_0= ruleParserRule | this_TerminalRule_1= ruleTerminalRule | this_EnumRule_2= ruleEnumRule ) )
            // InternalXtext.g:312:2: (this_ParserRule_0= ruleParserRule | this_TerminalRule_1= ruleTerminalRule | this_EnumRule_2= ruleEnumRule )
            {
            // InternalXtext.g:312:2: (this_ParserRule_0= ruleParserRule | this_TerminalRule_1= ruleTerminalRule | this_EnumRule_2= ruleEnumRule )
            int alt9=3;
            alt9 = dfa9.predict(input);
            switch (alt9) {
                case 1 :
                    // InternalXtext.g:313:3: this_ParserRule_0= ruleParserRule
                    {

                    			newCompositeNode(grammarAccess.getAbstractRuleAccess().getParserRuleParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ParserRule_0=ruleParserRule();

                    state._fsp--;


                    			current = this_ParserRule_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalXtext.g:322:3: this_TerminalRule_1= ruleTerminalRule
                    {

                    			newCompositeNode(grammarAccess.getAbstractRuleAccess().getTerminalRuleParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_TerminalRule_1=ruleTerminalRule();

                    state._fsp--;


                    			current = this_TerminalRule_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalXtext.g:331:3: this_EnumRule_2= ruleEnumRule
                    {

                    			newCompositeNode(grammarAccess.getAbstractRuleAccess().getEnumRuleParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_EnumRule_2=ruleEnumRule();

                    state._fsp--;


                    			current = this_EnumRule_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1354283
public final EObject ruleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XEqualityExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:1134:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
            // InternalPureXbase.g:1135:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            {
            // InternalPureXbase.g:1135:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            // InternalPureXbase.g:1136:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_21);
            this_XEqualityExpression_0=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current = this_XEqualityExpression_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalPureXbase.g:1144:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==32) ) {
                    int LA23_2 = input.LA(2);

                    if ( (synpred11_InternalPureXbase()) ) {
                        alt23=1;
                    }


                }


                switch (alt23) {
            	case 1 :
            	    // InternalPureXbase.g:1145:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    {
            	    // InternalPureXbase.g:1145:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
            	    // InternalPureXbase.g:1146:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
            	    {
            	    // InternalPureXbase.g:1156:5: ( () ( ( ruleOpAnd ) ) )
            	    // InternalPureXbase.g:1157:6: () ( ( ruleOpAnd ) )
            	    {
            	    // InternalPureXbase.g:1157:6: ()
            	    // InternalPureXbase.g:1158:7: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      							current = forceCreateModelElementAndSet(
            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	      								current);
            	      						
            	    }

            	    }

            	    // InternalPureXbase.g:1164:6: ( ( ruleOpAnd ) )
            	    // InternalPureXbase.g:1165:7: ( ruleOpAnd )
            	    {
            	    // InternalPureXbase.g:1165:7: ( ruleOpAnd )
            	    // InternalPureXbase.g:1166:8: ruleOpAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      								if (current==null) {
            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
            	      								}
            	      							
            	    }
            	    if ( state.backtracking==0 ) {

            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
            	      							
            	    }
            	    pushFollow(FOLLOW_3);
            	    ruleOpAnd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      								afterParserOrEnumRuleCall();
            	      							
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // InternalPureXbase.g:1182:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    // InternalPureXbase.g:1183:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    {
            	    // InternalPureXbase.g:1183:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    // InternalPureXbase.g:1184:6: lv_rightOperand_3_0= ruleXEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_21);
            	    lv_rightOperand_3_0=ruleXEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
            	      						}
            	      						set(
            	      							current,
            	      							"rightOperand",
            	      							lv_rightOperand_3_0,
            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }