Parses the the rule PatenthesizedExpr according to the following
production rule:
<p>
[45] ParenthesizedExpr ::= "(" Expr? ")" .
</p>

@throws TTXPathException
505883
private void parseParenthesizedExpr() throws TTXPathException {

        consume(TokenType.OPEN_BR, true);
        if (!(mToken.getType() == TokenType.CLOSE_BR)) {
            parseExpression();
        }
        consume(TokenType.CLOSE_BR, true);

    }
735666
public final EObject ruleXExpressionInClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_expressions_1_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:14103:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
            // InternalSARL.g:14104:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
            {
            // InternalSARL.g:14104:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
            // InternalSARL.g:14105:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
            {
            // InternalSARL.g:14105:3: ()
            // InternalSARL.g:14106:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
              					current);
              			
            }

            }

            // InternalSARL.g:14112:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
            loop335:
            do {
                int alt335=2;
                int LA335_0 = input.LA(1);

                if ( ((LA335_0>=RULE_STRING && LA335_0<=RULE_RICH_TEXT_START)||(LA335_0>=RULE_HEX && LA335_0<=RULE_DECIMAL)||LA335_0==25||(LA335_0>=28 && LA335_0<=29)||LA335_0==36||(LA335_0>=39 && LA335_0<=40)||(LA335_0>=42 && LA335_0<=45)||(LA335_0>=48 && LA335_0<=49)||LA335_0==51||LA335_0==55||(LA335_0>=60 && LA335_0<=63)||(LA335_0>=65 && LA335_0<=68)||(LA335_0>=73 && LA335_0<=75)||(LA335_0>=78 && LA335_0<=96)||LA335_0==106||LA335_0==129||(LA335_0>=131 && LA335_0<=140)) ) {
                    alt335=1;
                }


                switch (alt335) {
            	case 1 :
            	    // InternalSARL.g:14113:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
            	    {
            	    // InternalSARL.g:14113:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
            	    // InternalSARL.g:14114:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
            	    {
            	    // InternalSARL.g:14114:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
            	    // InternalSARL.g:14115:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_136);
            	    lv_expressions_1_0=ruleXExpressionOrVarDeclaration();

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

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
            	      						}
            	      						add(
            	      							current,
            	      							"expressions",
            	      							lv_expressions_1_0,
            	      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }

            	    // InternalSARL.g:14132:4: (otherlv_2= ';' )?
            	    int alt334=2;
            	    int LA334_0 = input.LA(1);

            	    if ( (LA334_0==26) ) {
            	        alt334=1;
            	    }
            	    switch (alt334) {
            	        case 1 :
            	            // InternalSARL.g:14133:5: otherlv_2= ';'
            	            {
            	            otherlv_2=(Token)match(input,26,FOLLOW_137); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
            	              				
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
435539
private void parseIntersectExceptExpr() throws TTXPathException {

        parseInstanceOfExpr();

        boolean isIntersect = mToken.getContent().equals("intersect");

        while (is("intersect", true) || is("except", true)) {
            // parse second operand axis

            mPipeBuilder.addExpressionSingle();

            parseInstanceOfExpr();

            mPipeBuilder.addIntExcExpression(getTransaction(), isIntersect);

            isIntersect = mToken.getContent().equals("intersect");
        }

    }
437269
private void parseComparisionExpr() throws TTXPathException {

        parseRangeExpr();

        final String mComp = mToken.getContent();

        if (isComp()) {

            // parse second operator axis
            mPipeBuilder.addExpressionSingle();

            parseRangeExpr();

            mPipeBuilder.addCompExpression(getTransaction(), mComp);
        }

    }
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;
    }
1030636
private void parseAdditiveExpr() throws TTXPathException {

        parseMultiplicativeExpr();

        String op = mToken.getContent();
        while (is(TokenType.PLUS, true) || is(TokenType.MINUS, true)) {

            // identify current operator kind
            // for (Operators op : Operators.values()) {
            // if (is(op.getOpName(), true)) {

            // parse second operand axis

            mPipeBuilder.addExpressionSingle();

            parseMultiplicativeExpr();

            mPipeBuilder.addOperatorExpression(getTransaction(), op);
            op = mToken.getContent();
        }
        // }
        // }
    }
312752
public final void ruleXAndExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:221:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
            // InternalXbase.g:222:2: ( ( rule__XAndExpression__Group__0 ) )
            {
            // InternalXbase.g:222:2: ( ( rule__XAndExpression__Group__0 ) )
            // InternalXbase.g:223:3: ( rule__XAndExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:224:3: ( rule__XAndExpression__Group__0 )
            // InternalXbase.g:224:4: rule__XAndExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XAndExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
786597
public final EObject ruleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAndExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:12296:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
            // InternalSARL.g:12297:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            {
            // InternalSARL.g:12297:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            // InternalSARL.g:12298:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_115);
            this_XAndExpression_0=ruleXAndExpression();

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

              			current = this_XAndExpression_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalSARL.g:12306:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            loop302:
            do {
                int alt302=2;
                int LA302_0 = input.LA(1);

                if ( (LA302_0==113) ) {
                    int LA302_2 = input.LA(2);

                    if ( (synpred31_InternalSARL()) ) {
                        alt302=1;
                    }


                }


                switch (alt302) {
            	case 1 :
            	    // InternalSARL.g:12307:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    {
            	    // InternalSARL.g:12307:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
            	    // InternalSARL.g:12308:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
            	    {
            	    // InternalSARL.g:12318:5: ( () ( ( ruleOpOr ) ) )
            	    // InternalSARL.g:12319:6: () ( ( ruleOpOr ) )
            	    {
            	    // InternalSARL.g:12319:6: ()
            	    // InternalSARL.g:12320:7: 
            	    {
            	    if ( state.backtracking==0 ) {

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

            	    }

            	    // InternalSARL.g:12326:6: ( ( ruleOpOr ) )
            	    // InternalSARL.g:12327:7: ( ruleOpOr )
            	    {
            	    // InternalSARL.g:12327:7: ( ruleOpOr )
            	    // InternalSARL.g:12328:8: ruleOpOr
            	    {
            	    if ( state.backtracking==0 ) {

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

            	      								newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
            	      							
            	    }
            	    pushFollow(FOLLOW_45);
            	    ruleOpOr();

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

            	      								afterParserOrEnumRuleCall();
            	      							
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // InternalSARL.g:12344:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    // InternalSARL.g:12345:5: (lv_rightOperand_3_0= ruleXAndExpression )
            	    {
            	    // InternalSARL.g:12345:5: (lv_rightOperand_3_0= ruleXAndExpression )
            	    // InternalSARL.g:12346:6: lv_rightOperand_3_0= ruleXAndExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_115);
            	    lv_rightOperand_3_0=ruleXAndExpression();

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

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

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
953901
private void parseUnaryExpr() throws TTXPathException {

        boolean isUnaryMinus = false;

        // the plus can be ignored since it does not modify the result
        while (is(TokenType.PLUS, true) || mToken.getType() == TokenType.MINUS) {

            if (is(TokenType.MINUS, true)) {
                // two following minuses is a plus and therefore can be ignored,
                // thus only in case of an odd number of minus signs, the unary
                // operation
                // has to be processed
                isUnaryMinus = !isUnaryMinus;
            }
        }

        if (isUnaryMinus) {
            // unary minus has to be processed

            mPipeBuilder.addExpressionSingle();

            parseValueExpr();
            mPipeBuilder.addOperatorExpression(getTransaction(), "unary");

        } else {

            parseValueExpr();
        }
    }
1298267
private void parseUnionExpr() throws TTXPathException {

        parseIntersectExceptExpr();

        while (is("union", true) || is(TokenType.OR, true)) {

            // parse second operand axis

            mPipeBuilder.addExpressionSingle();

            parseIntersectExceptExpr();

            mPipeBuilder.addUnionExpression(getTransaction());

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

        EObject this_XVariableDeclaration_0 = null;

        EObject this_XExpression_1 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:4474:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
            // InternalPureXbase.g:4475:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            {
            // InternalPureXbase.g:4475:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( ((LA79_0>=18 && LA79_0<=19)) ) {
                alt79=1;
            }
            else if ( ((LA79_0>=RULE_STRING && LA79_0<=RULE_ID)||(LA79_0>=14 && LA79_0<=15)||LA79_0==28||(LA79_0>=44 && LA79_0<=45)||LA79_0==50||(LA79_0>=58 && LA79_0<=59)||LA79_0==61||LA79_0==64||LA79_0==66||(LA79_0>=69 && LA79_0<=80)) ) {
                alt79=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 79, 0, input);

                throw nvae;
            }
            switch (alt79) {
                case 1 :
                    // InternalPureXbase.g:4476: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 :
                    // InternalPureXbase.g:4485: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;
    }
1051113
public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXParenthesizedExpression = null;


        try {
            // InternalSARL.g:14277:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
            // InternalSARL.g:14278:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:171:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
            // InternalXbase.g:172:2: ( ( rule__XOrExpression__Group__0 ) )
            {
            // InternalXbase.g:172:2: ( ( rule__XOrExpression__Group__0 ) )
            // InternalXbase.g:173:3: ( rule__XOrExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:174:3: ( rule__XOrExpression__Group__0 )
            // InternalXbase.g:174:4: rule__XOrExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XOrExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
1050503
public final void ruleXStringLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1371:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
            // InternalXbase.g:1372:2: ( ( rule__XStringLiteral__Group__0 ) )
            {
            // InternalXbase.g:1372:2: ( ( rule__XStringLiteral__Group__0 ) )
            // InternalXbase.g:1373:3: ( rule__XStringLiteral__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
            }
            // InternalXbase.g:1374:3: ( rule__XStringLiteral__Group__0 )
            // InternalXbase.g:1374:4: rule__XStringLiteral__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XStringLiteral__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
457362
public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
        try {
            // InternalXbase.g:1084:1: ( ruleXExpressionOrVarDeclaration EOF )
            // InternalXbase.g:1085:1: ruleXExpressionOrVarDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXExpressionOrVarDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXExpressionOrVarDeclarationRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
963329
public final EObject ruleXCastedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XPostfixOperation_0 = null;

        EObject lv_type_3_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:2125:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
            // InternalPureXbase.g:2126:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            {
            // InternalPureXbase.g:2126:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            // InternalPureXbase.g:2127:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_30);
            this_XPostfixOperation_0=ruleXPostfixOperation();

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

              			current = this_XPostfixOperation_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalPureXbase.g:2135:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            loop38:
            do {
                int alt38=2;
                int LA38_0 = input.LA(1);

                if ( (LA38_0==51) ) {
                    int LA38_2 = input.LA(2);

                    if ( (synpred20_InternalPureXbase()) ) {
                        alt38=1;
                    }


                }


                switch (alt38) {
            	case 1 :
            	    // InternalPureXbase.g:2136:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // InternalPureXbase.g:2136:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
            	    // InternalPureXbase.g:2137:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
            	    {
            	    // InternalPureXbase.g:2143:5: ( () otherlv_2= 'as' )
            	    // InternalPureXbase.g:2144:6: () otherlv_2= 'as'
            	    {
            	    // InternalPureXbase.g:2144:6: ()
            	    // InternalPureXbase.g:2145:7: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      							current = forceCreateModelElementAndSet(
            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
            	      								current);
            	      						
            	    }

            	    }

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

            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
            	      					
            	    }

            	    }


            	    }

            	    // InternalPureXbase.g:2157:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // InternalPureXbase.g:2158:5: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // InternalPureXbase.g:2158:5: (lv_type_3_0= ruleJvmTypeReference )
            	    // InternalPureXbase.g:2159:6: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_30);
            	    lv_type_3_0=ruleJvmTypeReference();

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

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
            	      						}
            	      						set(
            	      							current,
            	      							"type",
            	      							lv_type_3_0,
            	      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
33243
private void parseExpression() throws TTXPathException {

        mPipeBuilder.addExpr();

        int no = 0;
        do {
            parseExprSingle();
            no++;

        } while (is(TokenType.COMMA, true));

        mPipeBuilder.finishExpr(getTransaction(), no);
    }