// $ANTLR start "ifStatement" // AS3_ex.g3:2025:1: ifStatement : I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? ; public AS3_exParser.ifStatement_return ifStatement() // throws RecognitionException [1] { AS3_exParser.ifStatement_return retval = new AS3_exParser.ifStatement_return(); retval.Start = input.LT(1); int ifStatement_StartIndex = input.Index(); object root_0 = null; IToken I = null; IToken E = null; AS3_exParser.parExpression_return parExpression206 = null; AS3_exParser.statement_return statement207 = null; AS3_exParser.statement_return statement208 = null; object I_tree=null; object E_tree=null; CommonToken tok=null; bool ifOnSameLine=false; bool wasBlock=false; try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 85) ) { return retval; } // AS3_ex.g3:2032:5: (I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? ) // AS3_ex.g3:2033:9: I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? { root_0 = (object)adaptor.GetNilNode(); if ( state.backtracking == 0 ) { tok=mPrinter.GetLastToken(); //if the previous token was not an else, then insert a CR. Also if it is an 'else' but the setting says to put the 'if' on a new line if (!mPrinter.IsKeepElseIfOnSameLine() || (tok==null) || !tok.Text.Equals("else")) { InsertStatementCR(); } if (tok!=null && tok.Text.Equals("else")) { mPrinter.SetElseIfState(); } } I=(IToken)Match(input,IF,FOLLOW_IF_in_ifStatement9316); if (state.failed) return retval; if ( state.backtracking == 0 ) {I_tree = (object)adaptor.Create(I); adaptor.AddChild(root_0, I_tree); } if ( state.backtracking == 0 ) { Emit((CommonToken)I); ifOnSameLine=mPrinter.GetElseIfNeedToLoseIndent(); if (ifOnSameLine) PopIndent(); InsertWS(mPrinter.GetSpacesBetweenControlKeywordsAndParens()); } if ( state.backtracking == 0 ) { PushExpressionIndent(); } PushFollow(FOLLOW_parExpression_in_ifStatement9351); parExpression206 = parExpression(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, parExpression206.Tree); if ( state.backtracking == 0 ) { PopIndent(); } if ( state.backtracking == 0 ) { PushIndent(false); } if ( state.backtracking == 0 ) { AddIfElseBlockTracker();SetBlockFlag(false);ClearBlockFlag(); } PushFollow(FOLLOW_statement_in_ifStatement9396); statement207 = statement(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement207.Tree); if ( state.backtracking == 0 ) { wasBlock=IsBlockFlag();PopIfElseBlockTracker(); } if ( state.backtracking == 0 ) { PopIndent(); } // AS3_ex.g3:2063:10: ( options {k=1; } : E= ELSE statement )? int alt98 = 2; int LA98_0 = input.LA(1); if ( (LA98_0 == ELSE) ) { int LA98_2 = input.LA(2); if ( (synpred211_AS3_ex()) ) { alt98 = 1; } } switch (alt98) { case 1 : // AS3_ex.g3:2063:26: E= ELSE statement { E=(IToken)Match(input,ELSE,FOLLOW_ELSE_in_ifStatement9451); if (state.failed) return retval; if ( state.backtracking == 0 ) {E_tree = (object)adaptor.Create(E); adaptor.AddChild(root_0, E_tree); } if ( state.backtracking == 0 ) { CommonToken tempTok= (CommonToken) mPrinter.GetLastToken(); if (mPrinter.IsCRBeforeElse() || !wasBlock)//tempTok==null || !tempTok.Text.Equals("}")) InsertCR(false); } if ( state.backtracking == 0 ) { InsertWS(1); } if ( state.backtracking == 0 ) { Emit((CommonToken)E); } if ( state.backtracking == 0 ) { PushIndent(false); } PushFollow(FOLLOW_statement_in_ifStatement9492); statement208 = statement(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement208.Tree); if ( state.backtracking == 0 ) { PopIndent(); } } break; } if ( state.backtracking == 0 ) { if (ifOnSameLine) PushIndent(false); } } 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, 85, ifStatement_StartIndex); } } return retval; }
// $ANTLR start "ifStatement" // AS3_ex.g3:2700:1: ifStatement : I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? ; public AS3_exParser.ifStatement_return ifStatement() // throws RecognitionException [1] { AS3_exParser.ifStatement_return retval = new AS3_exParser.ifStatement_return(); retval.Start = input.LT(1); int ifStatement_StartIndex = input.Index(); object root_0 = null; IToken I = null; IToken E = null; AS3_exParser.parExpression_return parExpression217 = null; AS3_exParser.statement_return statement218 = null; AS3_exParser.statement_return statement219 = null; object I_tree=null; object E_tree=null; IToken tok=null; bool ifOnSameLine=false; bool wasBlock=false; bool needCloseBrace=false; int statementStartInOutput=(-1); int statementEndInOutput=(-1); int statementCount=0; IToken endToken=null; try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 85) ) { return retval; } // AS3_ex.g3:2712:5: (I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? ) // AS3_ex.g3:2713:6: I= IF parExpression statement ( options {k=1; } : E= ELSE statement )? { root_0 = (object)adaptor.GetNilNode(); if ( state.backtracking == 0 ) { mPrinter.markDeclEqualsContextChange(); } if ( state.backtracking == 0 ) { tok=mPrinter.getLastToken(); //if the previous token was not an else, then insert a CR. Also if it is an 'else' but the setting says to put the 'if' on a new line if (!mPrinter.isKeepElseIfOnSameLine() || (tok==null) || tok.Text != "else") { insertStatementCR(); } if (tok!=null && tok.Text == "else") { mPrinter.setElseIfState(); } } I=(IToken)Match(input,IF,FOLLOW_IF_in_ifStatement10263); if (state.failed) return retval; if ( state.backtracking == 0 ) {I_tree = (object)adaptor.Create(I); adaptor.AddChild(root_0, I_tree); } if ( state.backtracking == 0 ) { emit(I); statementStartInOutput=mPrinter.getCurrentOutputLength(); ifOnSameLine=mPrinter.getElseIfNeedToLoseIndent(); if (ifOnSameLine) popIndent(); insertWS(mPrinter.getSpacesBetweenControlKeywordsAndParens()); } if ( state.backtracking == 0 ) { pushExpressionIndent(); } PushFollow(FOLLOW_parExpression_in_ifStatement10298); parExpression217 = parExpression(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, parExpression217.Tree); if ( state.backtracking == 0 ) { endToken=input.LT(-1);statementEndInOutput=mPrinter.getCurrentOutputLength(); } if ( state.backtracking == 0 ) { popIndent(); } if ( state.backtracking == 0 ) { pushIndent(false); } if ( state.backtracking == 0 ) { addIfElseBlockTracker();setBlockFlag(false);clearBlockFlag(); } if ( state.backtracking == 0 ) { mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code); } if ( state.backtracking == 0 ) { mPrinter.addOpenBrace(input, ASPrettyPrinter.BraceAdd_Conditional); mPrinter.captureStatementStart(I, statementStartInOutput); mPrinter.captureStatementEnd(endToken, statementEndInOutput); statementCount=mStatementCount; } PushFollow(FOLLOW_statement_in_ifStatement10370); statement218 = statement(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement218.Tree); if ( state.backtracking == 0 ) { mPrinter.addCloseBrace(input.LT(1), ASPrettyPrinter.BraceAdd_Conditional, mStatementCount-statementCount); } if ( state.backtracking == 0 ) { popBlockStack(); } if ( state.backtracking == 0 ) { wasBlock=isBlockFlag();popIfElseBlockTracker(); } if ( state.backtracking == 0 ) { popIndent(); } // AS3_ex.g3:2754:10: ( options {k=1; } : E= ELSE statement )? int alt105 = 2; int LA105_0 = input.LA(1); if ( (LA105_0 == ELSE) ) { int LA105_2 = input.LA(2); if ( (synpred221_AS3_ex()) ) { alt105 = 1; } } switch (alt105) { case 1 : // AS3_ex.g3:2754:26: E= ELSE statement { E=(IToken)Match(input,ELSE,FOLLOW_ELSE_in_ifStatement10447); if (state.failed) return retval; if ( state.backtracking == 0 ) {E_tree = (object)adaptor.Create(E); adaptor.AddChild(root_0, E_tree); } if ( state.backtracking == 0 ) { IToken tempTok=mPrinter.getLastToken(); if (mPrinter.isCRBeforeElse() || !wasBlock)//tempTok==null || tempTok.Text != "}") insertCR(false); } if ( state.backtracking == 0 ) { insertWS(1); } if ( state.backtracking == 0 ) { emit(E); } if ( state.backtracking == 0 ) { pushIndent(false); } if ( state.backtracking == 0 ) { mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code); } if ( state.backtracking == 0 ) { needCloseBrace=mPrinter.addOpenBraceForElse((CommonTokenStream)input);statementCount=mStatementCount; } if ( state.backtracking == 0 ) { mPrinter.inCondition(); } PushFollow(FOLLOW_statement_in_ifStatement10535); statement219 = statement(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement219.Tree); if ( state.backtracking == 0 ) { if (needCloseBrace) mPrinter.addCloseBrace(input.LT(1), ASPrettyPrinter.BraceAdd_Conditional, mStatementCount-statementCount); } if ( state.backtracking == 0 ) { popBlockStack(); } if ( state.backtracking == 0 ) { popIndent(); } } break; } if ( state.backtracking == 0 ) { if (ifOnSameLine) pushIndent(false); } } 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, 85, ifStatement_StartIndex); } } return retval; }