Exemplo n.º 1
0
    // $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;
    }
Exemplo n.º 2
0
    // $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;
    }