public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
        EObject current = null;

        EObject this_XVariableDeclaration_0 = null;

        EObject this_XExpression_1 = null;



        	enterRule();

        try {
            // InternalXbase.g:3800:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
            // InternalXbase.g:3801:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            {
            // InternalXbase.g:3801:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( ((LA62_0>=67 && LA62_0<=68)) ) {
                alt62=1;
            }
            else if ( ((LA62_0>=RULE_STRING && LA62_0<=RULE_ID)||LA62_0==19||(LA62_0>=35 && LA62_0<=36)||LA62_0==41||LA62_0==49||(LA62_0>=51 && LA62_0<=52)||LA62_0==54||LA62_0==58||LA62_0==60||(LA62_0>=64 && LA62_0<=66)||(LA62_0>=69 && LA62_0<=81)||LA62_0==83) ) {
                alt62=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 62, 0, input);

                throw nvae;
            }
            switch (alt62) {
                case 1 :
                    // InternalXbase.g:3802:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

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

                      			current = this_XVariableDeclaration_0;
                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalXbase.g:3811:3: this_XExpression_1= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_XExpression_1=ruleXExpression();

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

                      			current = this_XExpression_1;
                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
public final EObject ruleXExpressionOrVarDeclaration ( ) throws RecognitionException { EObject current = null ; EObject this_XVariableDeclaration_0 = null ; EObject this_XExpression_1 = null ; enterRule ( ) ; try { { int alt62 = 2 ; int LA62_0 = input . LA ( 1 ) ; if ( ( ( LA62_0 >= 67 && LA62_0 <= 68 ) ) ) { alt62 = 1 ; } else if ( ( ( LA62_0 >= RULE_STRING && LA62_0 <= RULE_ID ) || LA62_0 == 19 || ( LA62_0 >= 35 && LA62_0 <= 36 ) || LA62_0 == 41 || LA62_0 == 49 || ( LA62_0 >= 51 && LA62_0 <= 52 ) || LA62_0 == 54 || LA62_0 == 58 || LA62_0 == 60 || ( LA62_0 >= 64 && LA62_0 <= 66 ) || ( LA62_0 >= 69 && LA62_0 <= 81 ) || LA62_0 == 83 ) ) { alt62 = 2 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 62 , 0 , input ) ; throw nvae ; } switch ( alt62 ) { case 1 : { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXExpressionOrVarDeclarationAccess ( ) . getXVariableDeclarationParserRuleCall_0 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; this_XVariableDeclaration_0 = ruleXVariableDeclaration ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { current = this_XVariableDeclaration_0 ; afterParserOrEnumRuleCall ( ) ; } } break ; case 2 : { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXExpressionOrVarDeclarationAccess ( ) . getXExpressionParserRuleCall_1 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; this_XExpression_1 = ruleXExpression ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { current = this_XExpression_1 ; afterParserOrEnumRuleCall ( ) ; } } break ; } } if ( state . backtracking == 0 ) { leaveRule ( ) ; } } catch ( RecognitionException re ) { recover ( input , re ) ; appendSkippedTokens ( ) ; } finally { } return current ; }
InternalXbase.g:3794:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;