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;
    }
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 { { { 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 ( ) ; } int alt9 = 2 ; int LA9_0 = input . LA ( 1 ) ; if ( ( LA9_0 == 24 ) ) { alt9 = 1 ; } switch ( alt9 ) { case 1 : { { if ( state . backtracking == 0 ) { } if ( state . backtracking == 0 ) { current = forceCreateModelElementAndAdd ( grammarAccess . getAlternativesAccess ( ) . getAlternativesGroupsAction_1_0 ( ) , current ) ; } } int cnt8 = 0 ; loop8 : do { int alt8 = 2 ; int LA8_0 = input . LA ( 1 ) ; if ( ( LA8_0 == 24 ) ) { alt8 = 1 ; } switch ( alt8 ) { case 1 : { 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 ( ) ) ; } { { 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 ; }
InternalSimpleAntlr.g:511:1: ruleAlternatives returns [EObject current=null] : (this_Group_0= ruleGroup ( () (otherlv_2= '|' ( (lv_groups_3_0= ruleGroup ) ) )+ )? ) ;