// $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; }