Exemple #1
0
    // $ANTLR start "shiftExpression"
    // AS3_ex.g3:2345:1: shiftExpression : additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )* ;
    public AS3_exParser.shiftExpression_return shiftExpression() // throws RecognitionException [1]
    {   
        AS3_exParser.shiftExpression_return retval = new AS3_exParser.shiftExpression_return();
        retval.Start = input.LT(1);
        int shiftExpression_StartIndex = input.Index();
        object root_0 = null;

        IToken t1 = null;
        IToken t2 = null;
        IToken t3 = null;
        AS3_exParser.additiveExpression_return additiveExpression289 = null;

        AS3_exParser.additiveExpression_return additiveExpression290 = null;


        object t1_tree=null;
        object t2_tree=null;
        object t3_tree=null;
        RewriteRuleTokenStream stream_GT = new RewriteRuleTokenStream(adaptor,"token GT");
        RewriteRuleTokenStream stream_SHL = new RewriteRuleTokenStream(adaptor,"token SHL");
        RewriteRuleSubtreeStream stream_additiveExpression = new RewriteRuleSubtreeStream(adaptor,"rule additiveExpression");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 122) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:2346:5: ( additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )* )
            // AS3_ex.g3:2346:9: additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )*
            {
            	PushFollow(FOLLOW_additiveExpression_in_shiftExpression11391);
            	additiveExpression289 = additiveExpression();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking==0 ) stream_additiveExpression.Add(additiveExpression289.Tree);
            	// AS3_ex.g3:2346:28: ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )*
            	do 
            	{
            	    int alt138 = 2;
            	    int LA138_0 = input.LA(1);

            	    if ( (LA138_0 == GT) )
            	    {
            	        int LA138_1 = input.LA(2);

            	        if ( (LA138_1 == GT) )
            	        {
            	            alt138 = 1;
            	        }


            	    }
            	    else if ( (LA138_0 == SHL) )
            	    {
            	        alt138 = 1;
            	    }


            	    switch (alt138) 
            		{
            			case 1 :
            			    // AS3_ex.g3:2347:7: (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression
            			    {
            			    	// AS3_ex.g3:2347:7: (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) )
            			    	int alt137 = 3;
            			    	int LA137_0 = input.LA(1);

            			    	if ( (LA137_0 == SHL) )
            			    	{
            			    	    alt137 = 1;
            			    	}
            			    	else if ( (LA137_0 == GT) )
            			    	{
            			    	    int LA137_2 = input.LA(2);

            			    	    if ( (LA137_2 == GT) )
            			    	    {
            			    	        int LA137_3 = input.LA(3);

            			    	        if ( (LA137_3 == GT) && (synpred283_AS3_ex()) )
            			    	        {
            			    	            alt137 = 3;
            			    	        }
            			    	        else if ( ((LA137_3 >= AS && LA137_3 <= STATIC) || LA137_3 == LCURLY || LA137_3 == LPAREN || LA137_3 == LBRACK || LA137_3 == LT || (LA137_3 >= PLUS && LA137_3 <= STAR) || (LA137_3 >= INC && LA137_3 <= DEC) || (LA137_3 >= NOT && LA137_3 <= INV) || (LA137_3 >= XML_AT && LA137_3 <= XML_LS_STD) || (LA137_3 >= SINGLE_QUOTE_LITERAL && LA137_3 <= DOUBLE_QUOTE_LITERAL) || LA137_3 == REGULAR_EXPR_LITERAL || LA137_3 == HEX_NUMBER_LITERAL || LA137_3 == DEC_NUMBER_LITERAL || LA137_3 == IDENTIFIER || (LA137_3 >= XML_COMMENT && LA137_3 <= XML_PI)) )
            			    	        {
            			    	            alt137 = 2;
            			    	        }
            			    	        else 
            			    	        {
            			    	            if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	            NoViableAltException nvae_d137s3 =
            			    	                new NoViableAltException("", 137, 3, input);

            			    	            throw nvae_d137s3;
            			    	        }
            			    	    }
            			    	    else 
            			    	    {
            			    	        if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	        NoViableAltException nvae_d137s2 =
            			    	            new NoViableAltException("", 137, 2, input);

            			    	        throw nvae_d137s2;
            			    	    }
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	    NoViableAltException nvae_d137s0 =
            			    	        new NoViableAltException("", 137, 0, input);

            			    	    throw nvae_d137s0;
            			    	}
            			    	switch (alt137) 
            			    	{
            			    	    case 1 :
            			    	        // AS3_ex.g3:2348:8: t1= SHL
            			    	        {
            			    	        	t1=(IToken)Match(input,SHL,FOLLOW_SHL_in_shiftExpression11413); if (state.failed) return retval; 
            			    	        	if ( state.backtracking==0 ) stream_SHL.Add(t1);


            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // AS3_ex.g3:2349:11: ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR )
            			    	        {
            			    	        	// AS3_ex.g3:2349:11: ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR )
            			    	        	// AS3_ex.g3:2349:12: ( '>' '>' )=>t1= '>' t2= '>' {...}?
            			    	        	{
            			    	        		t1=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression11435); if (state.failed) return retval; 
            			    	        		if ( state.backtracking==0 ) stream_GT.Add(t1);

            			    	        		t2=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression11439); if (state.failed) return retval; 
            			    	        		if ( state.backtracking==0 ) stream_GT.Add(t2);

            			    	        		if ( !(( t1.Line == t2.Line && 
            			    	        		          			t1.CharPositionInLine + 1 == t2.CharPositionInLine )) ) 
            			    	        		{
            			    	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	        		    throw new FailedPredicateException(input, "shiftExpression", " $t1.Line == $t2.Line && \r\n          \t\t\t$t1.CharPositionInLine + 1 == $t2.CharPositionInLine ");
            			    	        		}


            			    	        		// AST REWRITE
            			    	        		// elements:          
            			    	        		// token labels:      
            			    	        		// rule labels:       retval
            			    	        		// token list labels: 
            			    	        		// rule list labels:  
            			    	        		if ( state.backtracking==0 ) {
            			    	        		retval.Tree = root_0;
            			    	        		RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

            			    	        		root_0 = (object)adaptor.GetNilNode();
            			    	        		// 2352:10: -> SHR
            			    	        		{
            			    	        		    adaptor.AddChild(root_0, (object)adaptor.Create(SHR, "SHR"));

            			    	        		}

            			    	        		retval.Tree = root_0;retval.Tree = root_0;}
            			    	        	}

            			    	        	if ( state.backtracking == 0 ) 
            			    	        	{
            			    	        	  t1.Text = ">>";
            			    	        	}

            			    	        }
            			    	        break;
            			    	    case 3 :
            			    	        // AS3_ex.g3:2353:10: ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU )
            			    	        {
            			    	        	// AS3_ex.g3:2353:10: ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU )
            			    	        	// AS3_ex.g3:2353:11: ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}?
            			    	        	{
            			    	        		t1=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression11490); if (state.failed) return retval; 
            			    	        		if ( state.backtracking==0 ) stream_GT.Add(t1);

            			    	        		t2=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression11494); if (state.failed) return retval; 
            			    	        		if ( state.backtracking==0 ) stream_GT.Add(t2);

            			    	        		t3=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression11498); if (state.failed) return retval; 
            			    	        		if ( state.backtracking==0 ) stream_GT.Add(t3);

            			    	        		if ( !(( t1.Line == t2.Line && 
            			    	        		          			t1.CharPositionInLine + 1 == t2.CharPositionInLine &&
            			    	        		          			t2.Line == t3.Line && 
            			    	        		          			t2.CharPositionInLine + 1 == t3.CharPositionInLine )) ) 
            			    	        		{
            			    	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	        		    throw new FailedPredicateException(input, "shiftExpression", " $t1.Line == $t2.Line && \r\n          \t\t\t$t1.CharPositionInLine + 1 == $t2.CharPositionInLine &&\r\n          \t\t\t$t2.Line == $t3.Line && \r\n          \t\t\t$t2.CharPositionInLine + 1 == $t3.CharPositionInLine ");
            			    	        		}


            			    	        		// AST REWRITE
            			    	        		// elements:          
            			    	        		// token labels:      
            			    	        		// rule labels:       retval
            			    	        		// token list labels: 
            			    	        		// rule list labels:  
            			    	        		if ( state.backtracking==0 ) {
            			    	        		retval.Tree = root_0;
            			    	        		RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

            			    	        		root_0 = (object)adaptor.GetNilNode();
            			    	        		// 2358:10: -> SHU
            			    	        		{
            			    	        		    adaptor.AddChild(root_0, (object)adaptor.Create(SHU, "SHU"));

            			    	        		}

            			    	        		retval.Tree = root_0;retval.Tree = root_0;}
            			    	        	}

            			    	        	if ( state.backtracking == 0 ) 
            			    	        	{
            			    	        	  t1.Text = ">>>";
            			    	        	}

            			    	        }
            			    	        break;

            			    	}

            			    	if ( state.backtracking == 0 ) 
            			    	{
            			    	  IndentEmit((CommonToken)t1);
            			    	}
            			    	PushFollow(FOLLOW_additiveExpression_in_shiftExpression11545);
            			    	additiveExpression290 = additiveExpression();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return retval;
            			    	if ( state.backtracking==0 ) stream_additiveExpression.Add(additiveExpression290.Tree);
            			    	if ( state.backtracking == 0 ) 
            			    	{
            			    	  PopIndent();
            			    	}

            			    }
            			    break;

            			default:
            			    goto loop138;
            	    }
            	} while (true);

            	loop138:
            		;	// Stops C# compiler whining that label 'loop138' has no statements


            }

            retval.Stop = input.LT(-1);

            if ( state.backtracking==0 )
            {	retval.Tree = (object)adaptor.RulePostProcessing(root_0);
            	adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);}
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
    	// Conversion of the second argument necessary, but harmless
    	retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 122, shiftExpression_StartIndex); 
            }
        }
        return retval;
    }
    // $ANTLR start "shiftExpression"
    // AS3_ex.g3:3283:1: shiftExpression : additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )* ;
    public AS3_exParser.shiftExpression_return shiftExpression() // throws RecognitionException [1]
    {   
        AS3_exParser.shiftExpression_return retval = new AS3_exParser.shiftExpression_return();
        retval.Start = input.LT(1);
        int shiftExpression_StartIndex = input.Index();
        object root_0 = null;

        IToken t1 = null;
        IToken t2 = null;
        IToken t3 = null;
        AS3_exParser.additiveExpression_return additiveExpression300 = null;

        AS3_exParser.additiveExpression_return additiveExpression301 = null;


        object t1_tree=null;
        object t2_tree=null;
        object t3_tree=null;
        RewriteRuleTokenStream stream_SHL = new RewriteRuleTokenStream(adaptor,"token SHL");
        RewriteRuleTokenStream stream_GT = new RewriteRuleTokenStream(adaptor,"token GT");
        RewriteRuleSubtreeStream stream_additiveExpression = new RewriteRuleSubtreeStream(adaptor,"rule additiveExpression");

            WrapOptions options=mPrinter.getExpressionWrapOptions();
            bool pushedWrapInfo=false;

        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 122) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:3288:5: ( additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )* )
            // AS3_ex.g3:3288:9: additiveExpression ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )*
            {
                if ( state.backtracking == 0 ) 
                {
                  pushedWrapInfo=pushWrapInfo(options, true);
                }
                PushFollow(FOLLOW_additiveExpression_in_shiftExpression13093);
                additiveExpression300 = additiveExpression();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking==0 ) stream_additiveExpression.Add(additiveExpression300.Tree);
                // AS3_ex.g3:3289:28: ( (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression )*
                do 
                {
                    int alt145 = 2;
                    int LA145_0 = input.LA(1);

                    if ( (LA145_0 == GT) )
                    {
                        int LA145_1 = input.LA(2);

                        if ( (synpred294_AS3_ex()) )
                        {
                            alt145 = 1;
                        }


                    }
                    else if ( (LA145_0 == SHL) )
                    {
                        int LA145_3 = input.LA(2);

                        if ( (synpred294_AS3_ex()) )
                        {
                            alt145 = 1;
                        }


                    }


                    switch (alt145) 
                    {
                        case 1 :
                            // AS3_ex.g3:3290:7: (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) ) additiveExpression
                            {
                                // AS3_ex.g3:3290:7: (t1= SHL | ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR ) | ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU ) )
                                int alt144 = 3;
                                int LA144_0 = input.LA(1);

                                if ( (LA144_0 == SHL) )
                                {
                                    alt144 = 1;
                                }
                                else if ( (LA144_0 == GT) )
                                {
                                    int LA144_2 = input.LA(2);

                                    if ( (LA144_2 == GT) )
                                    {
                                        int LA144_3 = input.LA(3);

                                        if ( (LA144_3 == GT) && (synpred293_AS3_ex()) )
                                        {
                                            alt144 = 3;
                                        }
                                        else if ( ((LA144_3 >= AS && LA144_3 <= STATIC) || LA144_3 == LCURLY || LA144_3 == LPAREN || LA144_3 == LBRACK || LA144_3 == LT || (LA144_3 >= PLUS && LA144_3 <= STAR) || (LA144_3 >= INC && LA144_3 <= DEC) || (LA144_3 >= NOT && LA144_3 <= INV) || (LA144_3 >= XML_AT && LA144_3 <= XML_LS_STD) || (LA144_3 >= SINGLE_QUOTE_LITERAL && LA144_3 <= DOUBLE_QUOTE_LITERAL) || LA144_3 == REGULAR_EXPR_LITERAL || LA144_3 == HEX_NUMBER_LITERAL || LA144_3 == DEC_NUMBER_LITERAL || LA144_3 == IDENTIFIER || (LA144_3 >= XML_COMMENT && LA144_3 <= XML_PI)) )
                                        {
                                            alt144 = 2;
                                        }
                                        else 
                                        {
                                            if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                            NoViableAltException nvae_d144s3 =
                                                new NoViableAltException("", 144, 3, input);

                                            throw nvae_d144s3;
                                        }
                                    }
                                    else 
                                    {
                                        if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                        NoViableAltException nvae_d144s2 =
                                            new NoViableAltException("", 144, 2, input);

                                        throw nvae_d144s2;
                                    }
                                }
                                else 
                                {
                                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                    NoViableAltException nvae_d144s0 =
                                        new NoViableAltException("", 144, 0, input);

                                    throw nvae_d144s0;
                                }
                                switch (alt144) 
                                {
                                    case 1 :
                                        // AS3_ex.g3:3291:8: t1= SHL
                                        {
                                            t1=(IToken)Match(input,SHL,FOLLOW_SHL_in_shiftExpression13115); if (state.failed) return retval; 
                                            if ( state.backtracking==0 ) stream_SHL.Add(t1);


                                        }
                                        break;
                                    case 2 :
                                        // AS3_ex.g3:3296:11: ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR )
                                        {
                                            // AS3_ex.g3:3296:11: ( ( '>' '>' )=>t1= '>' t2= '>' {...}? -> SHR )
                                            // AS3_ex.g3:3296:12: ( '>' '>' )=>t1= '>' t2= '>' {...}?
                                            {
                                                t1=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression13146); if (state.failed) return retval; 
                                                if ( state.backtracking==0 ) stream_GT.Add(t1);

                                                t2=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression13150); if (state.failed) return retval; 
                                                if ( state.backtracking==0 ) stream_GT.Add(t2);

                                                if ( !(( t1.Line == t2.Line && 
                                                                    t1.CharPositionInLine + 1 == t2.CharPositionInLine )) ) 
                                                {
                                                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                                    throw new FailedPredicateException(input, "shiftExpression", " $t1.Line == $t2.Line && \n          \t\t\t$t1.CharPositionInLine + 1 == $t2.CharPositionInLine ");
                                                }


                                                // AST REWRITE
                                                // elements:          
                                                // token labels:      
                                                // rule labels:       retval
                                                // token list labels: 
                                                // rule list labels:  
                                                if ( state.backtracking==0 ) {
                                                retval.Tree = root_0;
                                                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                                                root_0 = (object)adaptor.GetNilNode();
                                                // 3299:10: -> SHR
                                                {
                                                    adaptor.AddChild(root_0, (object)adaptor.Create(SHR, "SHR"));

                                                }

                                                retval.Tree = root_0;retval.Tree = root_0;}
                                            }

                                            if ( state.backtracking == 0 ) 
                                            {
                                              t1.Text = ">>";
                                            }

                                        }
                                        break;
                                    case 3 :
                                        // AS3_ex.g3:3300:10: ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU )
                                        {
                                            // AS3_ex.g3:3300:10: ( ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}? -> SHU )
                                            // AS3_ex.g3:3300:11: ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}?
                                            {
                                                t1=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression13201); if (state.failed) return retval; 
                                                if ( state.backtracking==0 ) stream_GT.Add(t1);

                                                t2=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression13205); if (state.failed) return retval; 
                                                if ( state.backtracking==0 ) stream_GT.Add(t2);

                                                t3=(IToken)Match(input,GT,FOLLOW_GT_in_shiftExpression13209); if (state.failed) return retval; 
                                                if ( state.backtracking==0 ) stream_GT.Add(t3);

                                                if ( !(( t1.Line == t2.Line && 
                                                                    t1.CharPositionInLine + 1 == t2.CharPositionInLine &&
                                                                    t2.Line == t3.Line && 
                                                                    t2.CharPositionInLine + 1 == t3.CharPositionInLine )) ) 
                                                {
                                                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                                    throw new FailedPredicateException(input, "shiftExpression", " $t1.Line == $t2.Line && \n          \t\t\t$t1.CharPositionInLine + 1 == $t2.CharPositionInLine &&\n          \t\t\t$t2.Line == $t3.Line && \n          \t\t\t$t2.CharPositionInLine + 1 == $t3.CharPositionInLine ");
                                                }


                                                // AST REWRITE
                                                // elements:          
                                                // token labels:      
                                                // rule labels:       retval
                                                // token list labels: 
                                                // rule list labels:  
                                                if ( state.backtracking==0 ) {
                                                retval.Tree = root_0;
                                                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                                                root_0 = (object)adaptor.GetNilNode();
                                                // 3305:10: -> SHU
                                                {
                                                    adaptor.AddChild(root_0, (object)adaptor.Create(SHU, "SHU"));

                                                }

                                                retval.Tree = root_0;retval.Tree = root_0;}
                                            }

                                            if ( state.backtracking == 0 ) 
                                            {
                                              t1.Text = ">>>";
                                            }

                                        }
                                        break;

                                }

                                if ( state.backtracking == 0 ) 
                                {
                                  indentEmit(t1, ASPrettyPrinter.Break_Arithmetic_Ops_code);
                                }
                                PushFollow(FOLLOW_additiveExpression_in_shiftExpression13256);
                                additiveExpression301 = additiveExpression();
                                state.followingStackPointer--;
                                if (state.failed) return retval;
                                if ( state.backtracking==0 ) stream_additiveExpression.Add(additiveExpression301.Tree);
                                if ( state.backtracking == 0 ) 
                                {
                                  popIndent();
                                }

                            }
                            break;

                        default:
                            goto loop145;
                    }
                } while (true);

                loop145:
                    ;   // Stops C# compiler whining that label 'loop145' has no statements

                if ( state.backtracking == 0 ) 
                {
                  if (pushedWrapInfo) mPrinter.popWrapContext();
                }

            }

            retval.Stop = input.LT(-1);

            if ( state.backtracking==0 )
            {   retval.Tree = (object)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);}
        }
        catch (RecognitionException re) 
        {
            ReportError(re);
            Recover(input,re);
        // Conversion of the second argument necessary, but harmless
        retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
        {
            if ( state.backtracking > 0 ) 
            {
                Memoize(input, 122, shiftExpression_StartIndex); 
            }
        }
        return retval;
    }