// $ANTLR start "functionDeclaration" // AS3_ex.g3:1688:1: functionDeclaration : ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody ; public AS3_exParser.functionDeclaration_return functionDeclaration() // throws RecognitionException [1] { AS3_exParser.functionDeclaration_return retval = new AS3_exParser.functionDeclaration_return(); retval.Start = input.LT(1); int functionDeclaration_StartIndex = input.Index(); object root_0 = null; IToken F = null; IToken funcType = null; IToken I = null; IToken C = null; AS3_exParser.conditionalDirAndBindingDecls_return conditionalDirAndBindingDecls113 = null; AS3_exParser.memberModifiers_return memberModifiers114 = null; AS3_exParser.notQuiteReservedWord_return notQuiteReservedWord115 = null; AS3_exParser.formalParameterList_return formalParameterList116 = null; AS3_exParser.type_return type117 = null; AS3_exParser.functionBody_return functionBody118 = null; object F_tree=null; object funcType_tree=null; object I_tree=null; object C_tree=null; try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 51) ) { return retval; } // AS3_ex.g3:1689:5: ( ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody ) // AS3_ex.g3:1689:10: ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody { root_0 = (object)adaptor.GetNilNode(); // AS3_ex.g3:1689:10: ( conditionalDirAndBindingDecls )? int alt64 = 2; switch ( input.LA(1) ) { case IDENTIFIER: { int LA64_1 = input.LA(2); if ( (LA64_1 == XML_NS_OP) ) { alt64 = 1; } } break; case NATIVE: case DYNAMIC: case FINAL: case OVERRIDE: case STATIC: { int LA64_2 = input.LA(2); if ( (LA64_2 == XML_NS_OP) ) { alt64 = 1; } } break; case TO: case EACH: case GET: case SET: case NAMESPACE: { alt64 = 1; } break; } switch (alt64) { case 1 : // AS3_ex.g3:1689:11: conditionalDirAndBindingDecls { PushFollow(FOLLOW_conditionalDirAndBindingDecls_in_functionDeclaration7017); conditionalDirAndBindingDecls113 = conditionalDirAndBindingDecls(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, conditionalDirAndBindingDecls113.Tree); } break; } if ( state.backtracking == 0 ) { PushLazyIndent(); } if ( state.backtracking == 0 ) { InsertCR(false);InsertLines(mPrinter.GetBlankLinesBeforeFunction()); } // AS3_ex.g3:1689:133: ( memberModifiers )? int alt65 = 2; int LA65_0 = input.LA(1); if ( (LA65_0 == INTERNAL || LA65_0 == NATIVE || (LA65_0 >= PRIVATE && LA65_0 <= PUBLIC) || (LA65_0 >= DYNAMIC && LA65_0 <= STATIC) || LA65_0 == IDENTIFIER) ) { alt65 = 1; } switch (alt65) { case 1 : // AS3_ex.g3:0:0: memberModifiers { PushFollow(FOLLOW_memberModifiers_in_functionDeclaration7024); memberModifiers114 = memberModifiers(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, memberModifiers114.Tree); } break; } F=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration7029); if (state.failed) return retval; if ( state.backtracking == 0 ) {F_tree = (object)adaptor.Create(F); adaptor.AddChild(root_0, F_tree); } if ( state.backtracking == 0 ) { Emit((CommonToken)F); } // AS3_ex.g3:1690:5: (funcType= ( SET | GET ) )? int alt66 = 2; int LA66_0 = input.LA(1); if ( ((LA66_0 >= GET && LA66_0 <= SET)) ) { int LA66_1 = input.LA(2); if ( (LA66_1 == NATIVE || LA66_1 == TO || (LA66_1 >= EACH && LA66_1 <= NAMESPACE) || (LA66_1 >= DYNAMIC && LA66_1 <= STATIC) || LA66_1 == IDENTIFIER) ) { alt66 = 1; } } switch (alt66) { case 1 : // AS3_ex.g3:1690:6: funcType= ( SET | GET ) { funcType = (IToken)input.LT(1); if ( (input.LA(1) >= GET && input.LA(1) <= SET) ) { input.Consume(); if ( state.backtracking == 0 ) adaptor.AddChild(root_0, (object)adaptor.Create(funcType)); state.errorRecovery = false;state.failed = false; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } if ( state.backtracking == 0 ) { Emit((CommonToken)funcType); } } break; } // AS3_ex.g3:1691:5: (I= IDENTIFIER | notQuiteReservedWord ) int alt67 = 2; int LA67_0 = input.LA(1); if ( (LA67_0 == IDENTIFIER) ) { alt67 = 1; } else if ( (LA67_0 == NATIVE || LA67_0 == TO || (LA67_0 >= EACH && LA67_0 <= NAMESPACE) || (LA67_0 >= DYNAMIC && LA67_0 <= STATIC)) ) { alt67 = 2; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} NoViableAltException nvae_d67s0 = new NoViableAltException("", 67, 0, input); throw nvae_d67s0; } switch (alt67) { case 1 : // AS3_ex.g3:1691:6: I= IDENTIFIER { I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionDeclaration7058); 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); } } break; case 2 : // AS3_ex.g3:1691:46: notQuiteReservedWord { PushFollow(FOLLOW_notQuiteReservedWord_in_functionDeclaration7064); notQuiteReservedWord115 = notQuiteReservedWord(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, notQuiteReservedWord115.Tree); } break; } PushFollow(FOLLOW_formalParameterList_in_functionDeclaration7067); formalParameterList116 = formalParameterList(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList116.Tree); // AS3_ex.g3:1691:88: (C= COLON type )? int alt68 = 2; int LA68_0 = input.LA(1); if ( (LA68_0 == COLON) ) { alt68 = 1; } switch (alt68) { case 1 : // AS3_ex.g3:1691:89: C= COLON type { C=(IToken)Match(input,COLON,FOLLOW_COLON_in_functionDeclaration7072); if (state.failed) return retval; if ( state.backtracking == 0 ) {C_tree = (object)adaptor.Create(C); adaptor.AddChild(root_0, C_tree); } if ( state.backtracking == 0 ) { InsertWS(mPrinter.GetAdvancedSpacesBeforeColons());Emit((CommonToken)C);InsertWS(mPrinter.GetAdvancedSpacesAfterColons()); } PushFollow(FOLLOW_type_in_functionDeclaration7076); type117 = type(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type117.Tree); } break; } if ( state.backtracking == 0 ) { PopIndent(); } PushFollow(FOLLOW_functionBody_in_functionDeclaration7082); functionBody118 = functionBody(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionBody118.Tree); } 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, 51, functionDeclaration_StartIndex); } } return retval; }
// $ANTLR start "functionDeclaration" // AS3_ex.g3:2142:1: functionDeclaration : ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody ; public AS3_exParser.functionDeclaration_return functionDeclaration() // throws RecognitionException [1] { AS3_exParser.functionDeclaration_return retval = new AS3_exParser.functionDeclaration_return(); retval.Start = input.LT(1); int functionDeclaration_StartIndex = input.Index(); object root_0 = null; IToken F = null; IToken funcType = null; IToken I = null; IToken C = null; AS3_exParser.conditionalDirAndBindingDecls_return conditionalDirAndBindingDecls124 = null; AS3_exParser.memberModifiers_return memberModifiers125 = null; AS3_exParser.notQuiteReservedWord_return notQuiteReservedWord126 = null; AS3_exParser.formalParameterList_return formalParameterList127 = null; AS3_exParser.type_return type128 = null; AS3_exParser.functionBody_return functionBody129 = null; object F_tree=null; object funcType_tree=null; object I_tree=null; object C_tree=null; WrapOptions options=mPrinter.getExpressionWrapOptions(); bool pushedWrapInfo=false; try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 51) ) { return retval; } // AS3_ex.g3:2147:5: ( ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody ) // AS3_ex.g3:2148:5: ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (funcType= ( SET | GET ) )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? functionBody { root_0 = (object)adaptor.GetNilNode(); if ( state.backtracking == 0 ) { mPrinter.setBindingContext(ASPrettyPrinter.BindingContext_Function); } // AS3_ex.g3:2148:76: ( conditionalDirAndBindingDecls )? int alt70 = 2; switch ( input.LA(1) ) { case IDENTIFIER: { int LA70_1 = input.LA(2); if ( (LA70_1 == XML_NS_OP) ) { alt70 = 1; } } break; case NATIVE: case DYNAMIC: case FINAL: case OVERRIDE: case STATIC: { int LA70_2 = input.LA(2); if ( (LA70_2 == XML_NS_OP) ) { alt70 = 1; } } break; case TO: case EACH: case GET: case SET: case NAMESPACE: { alt70 = 1; } break; } switch (alt70) { case 1 : // AS3_ex.g3:2148:77: conditionalDirAndBindingDecls { PushFollow(FOLLOW_conditionalDirAndBindingDecls_in_functionDeclaration7459); conditionalDirAndBindingDecls124 = conditionalDirAndBindingDecls(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, conditionalDirAndBindingDecls124.Tree); } break; } if ( state.backtracking == 0 ) { pushLazyIndent(); } if ( state.backtracking == 0 ) { insertCR(false);insertLines(mPrinter.getBlankLinesBeforeFunction()); } // AS3_ex.g3:2148:199: ( memberModifiers )? int alt71 = 2; int LA71_0 = input.LA(1); if ( (LA71_0 == INTERNAL || LA71_0 == NATIVE || (LA71_0 >= PRIVATE && LA71_0 <= PUBLIC) || (LA71_0 >= DYNAMIC && LA71_0 <= STATIC) || LA71_0 == IDENTIFIER) ) { alt71 = 1; } switch (alt71) { case 1 : // AS3_ex.g3:0:0: memberModifiers { PushFollow(FOLLOW_memberModifiers_in_functionDeclaration7466); memberModifiers125 = memberModifiers(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, memberModifiers125.Tree); } break; } F=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration7471); if (state.failed) return retval; if ( state.backtracking == 0 ) {F_tree = (object)adaptor.Create(F); adaptor.AddChild(root_0, F_tree); } if ( state.backtracking == 0 ) { emit(F); } if ( state.backtracking == 0 ) { mPrinter.checkForSingleLineFunctionMode(F); } // AS3_ex.g3:2150:5: (funcType= ( SET | GET ) )? int alt72 = 2; int LA72_0 = input.LA(1); if ( ((LA72_0 >= GET && LA72_0 <= SET)) ) { int LA72_1 = input.LA(2); if ( (LA72_1 == NATIVE || LA72_1 == TO || (LA72_1 >= EACH && LA72_1 <= NAMESPACE) || (LA72_1 >= DYNAMIC && LA72_1 <= STATIC) || LA72_1 == IDENTIFIER) ) { alt72 = 1; } } switch (alt72) { case 1 : // AS3_ex.g3:2150:6: funcType= ( SET | GET ) { funcType = (IToken)input.LT(1); if ( (input.LA(1) >= GET && input.LA(1) <= SET) ) { input.Consume(); if ( state.backtracking == 0 ) adaptor.AddChild(root_0, (object)adaptor.Create(funcType)); state.errorRecovery = false;state.failed = false; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } if ( state.backtracking == 0 ) { emit(funcType); } } break; } if ( state.backtracking == 0 ) { pushedWrapInfo=pushWrapInfo(options, true); } // AS3_ex.g3:2152:2: (I= IDENTIFIER | notQuiteReservedWord ) int alt73 = 2; int LA73_0 = input.LA(1); if ( (LA73_0 == IDENTIFIER) ) { alt73 = 1; } else if ( (LA73_0 == NATIVE || LA73_0 == TO || (LA73_0 >= EACH && LA73_0 <= NAMESPACE) || (LA73_0 >= DYNAMIC && LA73_0 <= STATIC)) ) { alt73 = 2; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} NoViableAltException nvae_d73s0 = new NoViableAltException("", 73, 0, input); throw nvae_d73s0; } switch (alt73) { case 1 : // AS3_ex.g3:2152:3: I= IDENTIFIER { I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionDeclaration7513); 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); } } break; case 2 : // AS3_ex.g3:2152:30: notQuiteReservedWord { PushFollow(FOLLOW_notQuiteReservedWord_in_functionDeclaration7519); notQuiteReservedWord126 = notQuiteReservedWord(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, notQuiteReservedWord126.Tree); } break; } PushFollow(FOLLOW_formalParameterList_in_functionDeclaration7522); formalParameterList127 = formalParameterList(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList127.Tree); // AS3_ex.g3:2152:72: (C= COLON type )? int alt74 = 2; int LA74_0 = input.LA(1); if ( (LA74_0 == COLON) ) { alt74 = 1; } switch (alt74) { case 1 : // AS3_ex.g3:2152:73: C= COLON type { C=(IToken)Match(input,COLON,FOLLOW_COLON_in_functionDeclaration7527); if (state.failed) return retval; if ( state.backtracking == 0 ) {C_tree = (object)adaptor.Create(C); adaptor.AddChild(root_0, C_tree); } if ( state.backtracking == 0 ) { insertWS(mPrinter.getAdvancedSpacesBeforeColonsInFunctionTypes());emit(C);insertWS(mPrinter.getAdvancedSpacesAfterColonsInFunctionTypes()); } PushFollow(FOLLOW_type_in_functionDeclaration7531); type128 = type(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type128.Tree); } break; } if ( state.backtracking == 0 ) { popIndent();mIsFunctionDecl=true; } if ( state.backtracking == 0 ) { if (pushedWrapInfo) mPrinter.popWrapContext(); } PushFollow(FOLLOW_functionBody_in_functionDeclaration7547); functionBody129 = functionBody(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionBody129.Tree); if ( state.backtracking == 0 ) { mPrinter.endSingleLineFunctionMode(); } } 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, 51, functionDeclaration_StartIndex); } } return retval; }