InternalXtext.g:1279:1: ruleNegatedToken : ( ( rule__NegatedToken__Group__0 ) ) ;
199069
public final void ruleNegatedToken() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:1283:2: ( ( ( rule__NegatedToken__Group__0 ) ) )
            // InternalXtext.g:1284:2: ( ( rule__NegatedToken__Group__0 ) )
            {
            // InternalXtext.g:1284:2: ( ( rule__NegatedToken__Group__0 ) )
            // InternalXtext.g:1285:3: ( rule__NegatedToken__Group__0 )
            {
             before(grammarAccess.getNegatedTokenAccess().getGroup()); 
            // InternalXtext.g:1286:3: ( rule__NegatedToken__Group__0 )
            // InternalXtext.g:1286:4: rule__NegatedToken__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NegatedToken__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getNegatedTokenAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
99737
public final void ruleXReturnExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1446:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
            // InternalXbase.g:1447:2: ( ( rule__XReturnExpression__Group__0 ) )
            {
            // InternalXbase.g:1447:2: ( ( rule__XReturnExpression__Group__0 ) )
            // InternalXbase.g:1448:3: ( rule__XReturnExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1449:3: ( rule__XReturnExpression__Group__0 )
            // InternalXbase.g:1449:4: rule__XReturnExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XReturnExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXReturnExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
18388
public final void ruleTerminalToken() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:1183:2: ( ( ( rule__TerminalToken__Group__0 ) ) )
            // InternalXtext.g:1184:2: ( ( rule__TerminalToken__Group__0 ) )
            {
            // InternalXtext.g:1184:2: ( ( rule__TerminalToken__Group__0 ) )
            // InternalXtext.g:1185:3: ( rule__TerminalToken__Group__0 )
            {
             before(grammarAccess.getTerminalTokenAccess().getGroup()); 
            // InternalXtext.g:1186:3: ( rule__TerminalToken__Group__0 )
            // InternalXtext.g:1186:4: rule__TerminalToken__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TerminalToken__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getTerminalTokenAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
526818
public final void ruleTerminalTokenElement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:1208:2: ( ( ( rule__TerminalTokenElement__Alternatives ) ) )
            // InternalXtext.g:1209:2: ( ( rule__TerminalTokenElement__Alternatives ) )
            {
            // InternalXtext.g:1209:2: ( ( rule__TerminalTokenElement__Alternatives ) )
            // InternalXtext.g:1210:3: ( rule__TerminalTokenElement__Alternatives )
            {
             before(grammarAccess.getTerminalTokenElementAccess().getAlternatives()); 
            // InternalXtext.g:1211:3: ( rule__TerminalTokenElement__Alternatives )
            // InternalXtext.g:1211:4: rule__TerminalTokenElement__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TerminalTokenElement__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getTerminalTokenElementAccess().getAlternatives()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
15055
public final EObject ruleUntilToken() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_terminal_1_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:3378:2: ( (otherlv_0= '->' ( (lv_terminal_1_0= ruleTerminalTokenElement ) ) ) )
            // InternalXtext.g:3379:2: (otherlv_0= '->' ( (lv_terminal_1_0= ruleTerminalTokenElement ) ) )
            {
            // InternalXtext.g:3379:2: (otherlv_0= '->' ( (lv_terminal_1_0= ruleTerminalTokenElement ) ) )
            // InternalXtext.g:3380:3: otherlv_0= '->' ( (lv_terminal_1_0= ruleTerminalTokenElement ) )
            {
            otherlv_0=(Token)match(input,43,FollowSets000.FOLLOW_47); 

            			newLeafNode(otherlv_0, grammarAccess.getUntilTokenAccess().getHyphenMinusGreaterThanSignKeyword_0());
            		
            // InternalXtext.g:3384:3: ( (lv_terminal_1_0= ruleTerminalTokenElement ) )
            // InternalXtext.g:3385:4: (lv_terminal_1_0= ruleTerminalTokenElement )
            {
            // InternalXtext.g:3385:4: (lv_terminal_1_0= ruleTerminalTokenElement )
            // InternalXtext.g:3386:5: lv_terminal_1_0= ruleTerminalTokenElement
            {

            					newCompositeNode(grammarAccess.getUntilTokenAccess().getTerminalTerminalTokenElementParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_terminal_1_0=ruleTerminalTokenElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getUntilTokenRule());
            					}
            					set(
            						current,
            						"terminal",
            						lv_terminal_1_0,
            						"org.eclipse.xtext.Xtext.TerminalTokenElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1421:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
            // InternalXbase.g:1422:2: ( ( rule__XThrowExpression__Group__0 ) )
            {
            // InternalXbase.g:1422:2: ( ( rule__XThrowExpression__Group__0 ) )
            // InternalXbase.g:1423:3: ( rule__XThrowExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1424:3: ( rule__XThrowExpression__Group__0 )
            // InternalXbase.g:1424:4: rule__XThrowExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XThrowExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXThrowExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
961441
public final void ruleAlternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:333:2: ( ( ( rule__Alternatives__Group__0 ) ) )
            // InternalXtext.g:334:2: ( ( rule__Alternatives__Group__0 ) )
            {
            // InternalXtext.g:334:2: ( ( rule__Alternatives__Group__0 ) )
            // InternalXtext.g:335:3: ( rule__Alternatives__Group__0 )
            {
             before(grammarAccess.getAlternativesAccess().getGroup()); 
            // InternalXtext.g:336:3: ( rule__Alternatives__Group__0 )
            // InternalXtext.g:336:4: rule__Alternatives__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Alternatives__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getAlternativesAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
1310022
Rule FieldGroup() {
		return Sequence(String("G:"),
				ZeroOrMore(WSP()).suppressNode(),
				TexText(), HeaderEol()).label(FieldGroup);
	}
936585
public final void ruleParenthesizedTerminalElement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:1233:2: ( ( ( rule__ParenthesizedTerminalElement__Group__0 ) ) )
            // InternalXtext.g:1234:2: ( ( rule__ParenthesizedTerminalElement__Group__0 ) )
            {
            // InternalXtext.g:1234:2: ( ( rule__ParenthesizedTerminalElement__Group__0 ) )
            // InternalXtext.g:1235:3: ( rule__ParenthesizedTerminalElement__Group__0 )
            {
             before(grammarAccess.getParenthesizedTerminalElementAccess().getGroup()); 
            // InternalXtext.g:1236:3: ( rule__ParenthesizedTerminalElement__Group__0 )
            // InternalXtext.g:1236:4: rule__ParenthesizedTerminalElement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParenthesizedTerminalElement__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getParenthesizedTerminalElementAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
1072863
public final void ruleXTypeLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1396:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
            // InternalXbase.g:1397:2: ( ( rule__XTypeLiteral__Group__0 ) )
            {
            // InternalXbase.g:1397:2: ( ( rule__XTypeLiteral__Group__0 ) )
            // InternalXbase.g:1398:3: ( rule__XTypeLiteral__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
            }
            // InternalXbase.g:1399:3: ( rule__XTypeLiteral__Group__0 )
            // InternalXbase.g:1399:4: rule__XTypeLiteral__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XTypeLiteral__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXTypeLiteralAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
866636
public final void ruleXBasicForLoopExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:996:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
            // InternalXbase.g:997:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
            {
            // InternalXbase.g:997:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
            // InternalXbase.g:998:3: ( rule__XBasicForLoopExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:999:3: ( rule__XBasicForLoopExpression__Group__0 )
            // InternalXbase.g:999:4: rule__XBasicForLoopExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XBasicForLoopExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
523201
public void mTokens() throws RecognitionException {
        // InternalSimpleExpressions.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
        int alt12=22;
        alt12 = dfa12.predict(input);
        switch (alt12) {
            case 1 :
                // InternalSimpleExpressions.g:1:10: T__11
                {
                mT__11(); 

                }
                break;
            case 2 :
                // InternalSimpleExpressions.g:1:16: T__12
                {
                mT__12(); 

                }
                break;
            case 3 :
                // InternalSimpleExpressions.g:1:22: T__13
                {
                mT__13(); 

                }
                break;
            case 4 :
                // InternalSimpleExpressions.g:1:28: T__14
                {
                mT__14(); 

                }
                break;
            case 5 :
                // InternalSimpleExpressions.g:1:34: T__15
                {
                mT__15(); 

                }
                break;
            case 6 :
                // InternalSimpleExpressions.g:1:40: T__16
                {
                mT__16(); 

                }
                break;
            case 7 :
                // InternalSimpleExpressions.g:1:46: T__17
                {
                mT__17(); 

                }
                break;
            case 8 :
                // InternalSimpleExpressions.g:1:52: T__18
                {
                mT__18(); 

                }
                break;
            case 9 :
                // InternalSimpleExpressions.g:1:58: T__19
                {
                mT__19(); 

                }
                break;
            case 10 :
                // InternalSimpleExpressions.g:1:64: T__20
                {
                mT__20(); 

                }
                break;
            case 11 :
                // InternalSimpleExpressions.g:1:70: T__21
                {
                mT__21(); 

                }
                break;
            case 12 :
                // InternalSimpleExpressions.g:1:76: T__22
                {
                mT__22(); 

                }
                break;
            case 13 :
                // InternalSimpleExpressions.g:1:82: T__23
                {
                mT__23(); 

                }
                break;
            case 14 :
                // InternalSimpleExpressions.g:1:88: T__24
                {
                mT__24(); 

                }
                break;
            case 15 :
                // InternalSimpleExpressions.g:1:94: T__25
                {
                mT__25(); 

                }
                break;
            case 16 :
                // InternalSimpleExpressions.g:1:100: RULE_ID
                {
                mRULE_ID(); 

                }
                break;
            case 17 :
                // InternalSimpleExpressions.g:1:108: RULE_INT
                {
                mRULE_INT(); 

                }
                break;
            case 18 :
                // InternalSimpleExpressions.g:1:117: RULE_STRING
                {
                mRULE_STRING(); 

                }
                break;
            case 19 :
                // InternalSimpleExpressions.g:1:129: RULE_ML_COMMENT
                {
                mRULE_ML_COMMENT(); 

                }
                break;
            case 20 :
                // InternalSimpleExpressions.g:1:145: RULE_SL_COMMENT
                {
                mRULE_SL_COMMENT(); 

                }
                break;
            case 21 :
                // InternalSimpleExpressions.g:1:161: RULE_WS
                {
                mRULE_WS(); 

                }
                break;
            case 22 :
                // InternalSimpleExpressions.g:1:169: RULE_ANY_OTHER
                {
                mRULE_ANY_OTHER(); 

                }
                break;

        }

    }
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;
    }
661341
public final void ruleXWhileExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1021:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
            // InternalXbase.g:1022:2: ( ( rule__XWhileExpression__Group__0 ) )
            {
            // InternalXbase.g:1022:2: ( ( rule__XWhileExpression__Group__0 ) )
            // InternalXbase.g:1023:3: ( rule__XWhileExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1024:3: ( rule__XWhileExpression__Group__0 )
            // InternalXbase.g:1024:4: rule__XWhileExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XWhileExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXWhileExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
717836
def t_REGULATION(self, token):
        '
        indents = token.lexer.lexmatch.group("indents")
        indents = len(indents)/4 if indents else 0
        reg = token.lexer.lexmatch.group("reg").decode("utf8")
        text = token.lexer.lexmatch.group("text").decode("utf8")
        token.value = (indents, reg, text)
        token.lexer.lineno += 1
        return token
1322060
public final EObject ruleAbstractToken() throws RecognitionException {
        EObject current = null;

        EObject this_AbstractTokenWithCardinality_0 = null;

        EObject this_Action_1 = null;



        	enterRule();

        try {
            // InternalXtext.g:1247:2: ( (this_AbstractTokenWithCardinality_0= ruleAbstractTokenWithCardinality | this_Action_1= ruleAction ) )
            // InternalXtext.g:1248:2: (this_AbstractTokenWithCardinality_0= ruleAbstractTokenWithCardinality | this_Action_1= ruleAction )
            {
            // InternalXtext.g:1248:2: (this_AbstractTokenWithCardinality_0= ruleAbstractTokenWithCardinality | this_Action_1= ruleAction )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( ((LA33_0>=RULE_STRING && LA33_0<=RULE_ID)||LA33_0==15||(LA33_0>=39 && LA33_0<=40)||(LA33_0>=42 && LA33_0<=43)) ) {
                alt33=1;
            }
            else if ( (LA33_0==34) ) {
                alt33=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // InternalXtext.g:1249:3: this_AbstractTokenWithCardinality_0= ruleAbstractTokenWithCardinality
                    {

                    			newCompositeNode(grammarAccess.getAbstractTokenAccess().getAbstractTokenWithCardinalityParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_AbstractTokenWithCardinality_0=ruleAbstractTokenWithCardinality();

                    state._fsp--;


                    			current = this_AbstractTokenWithCardinality_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalXtext.g:1258:3: this_Action_1= ruleAction
                    {

                    			newCompositeNode(grammarAccess.getAbstractTokenAccess().getActionParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_Action_1=ruleAction();

                    state._fsp--;


                    			current = this_Action_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:271:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
            // InternalXbase.g:272:2: ( ( rule__XEqualityExpression__Group__0 ) )
            {
            // InternalXbase.g:272:2: ( ( rule__XEqualityExpression__Group__0 ) )
            // InternalXbase.g:273:3: ( rule__XEqualityExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:274:3: ( rule__XEqualityExpression__Group__0 )
            // InternalXbase.g:274:4: rule__XEqualityExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XEqualityExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }