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

        EObject this_XExpressionOrVarDeclaration_0 = null;

        EObject this_RichStringForLoop_1 = null;

        EObject this_RichStringIf_2 = null;



        	enterRule();

        try {
            // InternalSARL.g:11132:2: ( (this_XExpressionOrVarDeclaration_0= ruleXExpressionOrVarDeclaration | this_RichStringForLoop_1= ruleRichStringForLoop | this_RichStringIf_2= ruleRichStringIf ) )
            // InternalSARL.g:11133:2: (this_XExpressionOrVarDeclaration_0= ruleXExpressionOrVarDeclaration | this_RichStringForLoop_1= ruleRichStringForLoop | this_RichStringIf_2= ruleRichStringIf )
            {
            // InternalSARL.g:11133:2: (this_XExpressionOrVarDeclaration_0= ruleXExpressionOrVarDeclaration | this_RichStringForLoop_1= ruleRichStringForLoop | this_RichStringIf_2= ruleRichStringIf )
            int alt280=3;
            switch ( input.LA(1) ) {
            case RULE_STRING:
            case RULE_ID:
            case RULE_RICH_TEXT:
            case RULE_RICH_TEXT_START:
            case RULE_HEX:
            case RULE_INT:
            case RULE_DECIMAL:
            case 25:
            case 28:
            case 29:
            case 36:
            case 39:
            case 40:
            case 42:
            case 43:
            case 44:
            case 45:
            case 48:
            case 49:
            case 51:
            case 55:
            case 60:
            case 61:
            case 62:
            case 63:
            case 65:
            case 66:
            case 67:
            case 68:
            case 73:
            case 74:
            case 75:
            case 78:
            case 79:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
            case 88:
            case 89:
            case 90:
            case 91:
            case 92:
            case 93:
            case 94:
            case 95:
            case 96:
            case 106:
            case 129:
            case 131:
            case 132:
            case 133:
            case 134:
            case 135:
            case 136:
            case 137:
            case 138:
            case 139:
            case 140:
                {
                alt280=1;
                }
                break;
            case 99:
                {
                alt280=2;
                }
                break;
            case 101:
                {
                alt280=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 280, 0, input);

                throw nvae;
            }

            switch (alt280) {
                case 1 :
                    // InternalSARL.g:11134:3: this_XExpressionOrVarDeclaration_0= ruleXExpressionOrVarDeclaration
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getRichStringPartAccess().getXExpressionOrVarDeclarationParserRuleCall_0());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_XExpressionOrVarDeclaration_0=ruleXExpressionOrVarDeclaration();

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

                      			current = this_XExpressionOrVarDeclaration_0;
                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:11143:3: this_RichStringForLoop_1= ruleRichStringForLoop
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getRichStringPartAccess().getRichStringForLoopParserRuleCall_1());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_RichStringForLoop_1=ruleRichStringForLoop();

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

                      			current = this_RichStringForLoop_1;
                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 3 :
                    // InternalSARL.g:11152:3: this_RichStringIf_2= ruleRichStringIf
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getRichStringPartAccess().getRichStringIfParserRuleCall_2());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_RichStringIf_2=ruleRichStringIf();

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

                      			current = this_RichStringIf_2;
                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
public final EObject ruleRichStringPart ( ) throws RecognitionException { EObject current = null ; EObject this_XExpressionOrVarDeclaration_0 = null ; EObject this_RichStringForLoop_1 = null ; EObject this_RichStringIf_2 = null ; enterRule ( ) ; try { { int alt280 = 3 ; switch ( input . LA ( 1 ) ) { case RULE_STRING : case RULE_ID : case RULE_RICH_TEXT : case RULE_RICH_TEXT_START : case RULE_HEX : case RULE_INT : case RULE_DECIMAL : case 25 : case 28 : case 29 : case 36 : case 39 : case 40 : case 42 : case 43 : case 44 : case 45 : case 48 : case 49 : case 51 : case 55 : case 60 : case 61 : case 62 : case 63 : case 65 : case 66 : case 67 : case 68 : case 73 : case 74 : case 75 : case 78 : case 79 : case 80 : case 81 : case 82 : case 83 : case 84 : case 85 : case 86 : case 87 : case 88 : case 89 : case 90 : case 91 : case 92 : case 93 : case 94 : case 95 : case 96 : case 106 : case 129 : case 131 : case 132 : case 133 : case 134 : case 135 : case 136 : case 137 : case 138 : case 139 : case 140 : { alt280 = 1 ; } break ; case 99 : { alt280 = 2 ; } break ; case 101 : { alt280 = 3 ; } break ; default : if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 280 , 0 , input ) ; throw nvae ; } switch ( alt280 ) { case 1 : { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getRichStringPartAccess ( ) . getXExpressionOrVarDeclarationParserRuleCall_0 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; this_XExpressionOrVarDeclaration_0 = ruleXExpressionOrVarDeclaration ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { current = this_XExpressionOrVarDeclaration_0 ; afterParserOrEnumRuleCall ( ) ; } } break ; case 2 : { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getRichStringPartAccess ( ) . getRichStringForLoopParserRuleCall_1 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; this_RichStringForLoop_1 = ruleRichStringForLoop ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { current = this_RichStringForLoop_1 ; afterParserOrEnumRuleCall ( ) ; } } break ; case 3 : { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getRichStringPartAccess ( ) . getRichStringIfParserRuleCall_2 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; this_RichStringIf_2 = ruleRichStringIf ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { current = this_RichStringIf_2 ; afterParserOrEnumRuleCall ( ) ; } } break ; } } if ( state . backtracking == 0 ) { leaveRule ( ) ; } } catch ( RecognitionException re ) { recover ( input , re ) ; appendSkippedTokens ( ) ; } finally { } return current ; }
InternalSARL.g:11126:1: ruleRichStringPart returns [EObject current=null] : (this_XExpressionOrVarDeclaration_0= ruleXExpressionOrVarDeclaration | this_RichStringForLoop_1= ruleRichStringForLoop | this_RichStringIf_2= ruleRichStringIf ) ;