Exemple #1
0
    // $ANTLR start "interfaceFunctionDeclaration"
    // AS3_ex.g3:1669:1: interfaceFunctionDeclaration : ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic ;
    public AS3_exParser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration() // throws RecognitionException [1]
    {   
        AS3_exParser.interfaceFunctionDeclaration_return retval = new AS3_exParser.interfaceFunctionDeclaration_return();
        retval.Start = input.LT(1);
        int interfaceFunctionDeclaration_StartIndex = input.Index();
        object root_0 = null;

        IToken F = null;
        IToken S = null;
        IToken G = null;
        IToken I = null;
        IToken C = null;
        AS3_exParser.conditionalDirAndBindingDecls_return conditionalDirAndBindingDecls102 = null;

        AS3_exParser.memberModifiers_return memberModifiers103 = null;

        AS3_exParser.notQuiteReservedWord_return notQuiteReservedWord104 = null;

        AS3_exParser.formalParameterList_return formalParameterList105 = null;

        AS3_exParser.type_return type106 = null;

        AS3_exParser.semic_return semic107 = null;


        object F_tree=null;
        object S_tree=null;
        object G_tree=null;
        object I_tree=null;
        object C_tree=null;

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 49) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:1670:5: ( ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic )
            // AS3_ex.g3:1670:10: ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// AS3_ex.g3:1670:10: ( conditionalDirAndBindingDecls )?
            	int alt56 = 2;
            	switch ( input.LA(1) ) 
            	{
            	    case IDENTIFIER:
            	    	{
            	        int LA56_1 = input.LA(2);

            	        if ( (LA56_1 == XML_NS_OP) )
            	        {
            	            alt56 = 1;
            	        }
            	        }
            	        break;
            	    case NATIVE:
            	    case DYNAMIC:
            	    case FINAL:
            	    case OVERRIDE:
            	    case STATIC:
            	    	{
            	        int LA56_2 = input.LA(2);

            	        if ( (LA56_2 == XML_NS_OP) )
            	        {
            	            alt56 = 1;
            	        }
            	        }
            	        break;
            	    case TO:
            	    case EACH:
            	    case GET:
            	    case SET:
            	    case NAMESPACE:
            	    	{
            	        alt56 = 1;
            	        }
            	        break;
            	}

            	switch (alt56) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1670:11: conditionalDirAndBindingDecls
            	        {
            	        	PushFollow(FOLLOW_conditionalDirAndBindingDecls_in_interfaceFunctionDeclaration6876);
            	        	conditionalDirAndBindingDecls102 = conditionalDirAndBindingDecls();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, conditionalDirAndBindingDecls102.Tree);

            	        }
            	        break;

            	}

            	if ( state.backtracking == 0 ) 
            	{
            	  InsertCR(false);
            	}
            	// AS3_ex.g3:1670:62: ( memberModifiers )?
            	int alt57 = 2;
            	int LA57_0 = input.LA(1);

            	if ( (LA57_0 == INTERNAL || LA57_0 == NATIVE || (LA57_0 >= PRIVATE && LA57_0 <= PUBLIC) || (LA57_0 >= DYNAMIC && LA57_0 <= STATIC) || LA57_0 == IDENTIFIER) )
            	{
            	    alt57 = 1;
            	}
            	switch (alt57) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:0:0: memberModifiers
            	        {
            	        	PushFollow(FOLLOW_memberModifiers_in_interfaceFunctionDeclaration6882);
            	        	memberModifiers103 = memberModifiers();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, memberModifiers103.Tree);

            	        }
            	        break;

            	}

            	F=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_interfaceFunctionDeclaration6887); 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:1672:5: (S= SET | G= GET )?
            	int alt58 = 3;
            	int LA58_0 = input.LA(1);

            	if ( (LA58_0 == SET) )
            	{
            	    int LA58_1 = input.LA(2);

            	    if ( (LA58_1 == NATIVE || LA58_1 == TO || (LA58_1 >= EACH && LA58_1 <= NAMESPACE) || (LA58_1 >= DYNAMIC && LA58_1 <= STATIC) || LA58_1 == IDENTIFIER) )
            	    {
            	        alt58 = 1;
            	    }
            	}
            	else if ( (LA58_0 == GET) )
            	{
            	    int LA58_2 = input.LA(2);

            	    if ( (LA58_2 == NATIVE || LA58_2 == TO || (LA58_2 >= EACH && LA58_2 <= NAMESPACE) || (LA58_2 >= DYNAMIC && LA58_2 <= STATIC) || LA58_2 == IDENTIFIER) )
            	    {
            	        alt58 = 2;
            	    }
            	}
            	switch (alt58) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1672:6: S= SET
            	        {
            	        	S=(IToken)Match(input,SET,FOLLOW_SET_in_interfaceFunctionDeclaration6906); if (state.failed) return retval;
            	        	if ( state.backtracking == 0 )
            	        	{S_tree = (object)adaptor.Create(S);
            	        		adaptor.AddChild(root_0, S_tree);
            	        	}
            	        	if ( state.backtracking == 0 ) 
            	        	{
            	        	  Emit((CommonToken)S);
            	        	}

            	        }
            	        break;
            	    case 2 :
            	        // AS3_ex.g3:1672:38: G= GET
            	        {
            	        	G=(IToken)Match(input,GET,FOLLOW_GET_in_interfaceFunctionDeclaration6913); if (state.failed) return retval;
            	        	if ( state.backtracking == 0 )
            	        	{G_tree = (object)adaptor.Create(G);
            	        		adaptor.AddChild(root_0, G_tree);
            	        	}
            	        	if ( state.backtracking == 0 ) 
            	        	{
            	        	  Emit((CommonToken)G);
            	        	}

            	        }
            	        break;

            	}

            	// AS3_ex.g3:1673:5: (I= IDENTIFIER | notQuiteReservedWord )
            	int alt59 = 2;
            	int LA59_0 = input.LA(1);

            	if ( (LA59_0 == IDENTIFIER) )
            	{
            	    alt59 = 1;
            	}
            	else if ( (LA59_0 == NATIVE || LA59_0 == TO || (LA59_0 >= EACH && LA59_0 <= NAMESPACE) || (LA59_0 >= DYNAMIC && LA59_0 <= STATIC)) )
            	{
            	    alt59 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d59s0 =
            	        new NoViableAltException("", 59, 0, input);

            	    throw nvae_d59s0;
            	}
            	switch (alt59) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1673:6: I= IDENTIFIER
            	        {
            	        	I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceFunctionDeclaration6927); 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:1673:46: notQuiteReservedWord
            	        {
            	        	PushFollow(FOLLOW_notQuiteReservedWord_in_interfaceFunctionDeclaration6933);
            	        	notQuiteReservedWord104 = notQuiteReservedWord();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, notQuiteReservedWord104.Tree);

            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_formalParameterList_in_interfaceFunctionDeclaration6936);
            	formalParameterList105 = formalParameterList();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList105.Tree);
            	// AS3_ex.g3:1673:88: (C= COLON type )?
            	int alt60 = 2;
            	int LA60_0 = input.LA(1);

            	if ( (LA60_0 == COLON) )
            	{
            	    alt60 = 1;
            	}
            	switch (alt60) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1673:89: C= COLON type
            	        {
            	        	C=(IToken)Match(input,COLON,FOLLOW_COLON_in_interfaceFunctionDeclaration6941); 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_interfaceFunctionDeclaration6945);
            	        	type106 = type();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type106.Tree);

            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_semic_in_interfaceFunctionDeclaration6949);
            	semic107 = semic();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic107.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, 49, interfaceFunctionDeclaration_StartIndex); 
            }
        }
        return retval;
    }
    // $ANTLR start "interfaceFunctionDeclaration"
    // AS3_ex.g3:2117:1: interfaceFunctionDeclaration : ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic ;
    public AS3_exParser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration() // throws RecognitionException [1]
    {   
        AS3_exParser.interfaceFunctionDeclaration_return retval = new AS3_exParser.interfaceFunctionDeclaration_return();
        retval.Start = input.LT(1);
        int interfaceFunctionDeclaration_StartIndex = input.Index();
        object root_0 = null;

        IToken F = null;
        IToken S = null;
        IToken G = 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.semic_return semic118 = null;


        object F_tree=null;
        object S_tree=null;
        object G_tree=null;
        object I_tree=null;
        object C_tree=null;


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

        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 49) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:2122:5: ( ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic )
            // AS3_ex.g3:2122:10: ( conditionalDirAndBindingDecls )? ( memberModifiers )? F= FUNCTION (S= SET | G= GET )? (I= IDENTIFIER | notQuiteReservedWord ) formalParameterList (C= COLON type )? semic
            {
                root_0 = (object)adaptor.GetNilNode();

                if ( state.backtracking == 0 ) 
                {
                  mPrinter.setBindingContext(ASPrettyPrinter.BindingContext_Function);
                }
                // AS3_ex.g3:2122:81: ( conditionalDirAndBindingDecls )?
                int alt62 = 2;
                switch ( input.LA(1) ) 
                {
                    case IDENTIFIER:
                        {
                        int LA62_1 = input.LA(2);

                        if ( (LA62_1 == XML_NS_OP) )
                        {
                            alt62 = 1;
                        }
                        }
                        break;
                    case NATIVE:
                    case DYNAMIC:
                    case FINAL:
                    case OVERRIDE:
                    case STATIC:
                        {
                        int LA62_2 = input.LA(2);

                        if ( (LA62_2 == XML_NS_OP) )
                        {
                            alt62 = 1;
                        }
                        }
                        break;
                    case TO:
                    case EACH:
                    case GET:
                    case SET:
                    case NAMESPACE:
                        {
                        alt62 = 1;
                        }
                        break;
                }

                switch (alt62) 
                {
                    case 1 :
                        // AS3_ex.g3:2122:82: conditionalDirAndBindingDecls
                        {
                            PushFollow(FOLLOW_conditionalDirAndBindingDecls_in_interfaceFunctionDeclaration7300);
                            conditionalDirAndBindingDecls113 = conditionalDirAndBindingDecls();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, conditionalDirAndBindingDecls113.Tree);

                        }
                        break;

                }

                if ( state.backtracking == 0 ) 
                {
                  insertCR(false);
                }
                // AS3_ex.g3:2122:133: ( memberModifiers )?
                int alt63 = 2;
                int LA63_0 = input.LA(1);

                if ( (LA63_0 == INTERNAL || LA63_0 == NATIVE || (LA63_0 >= PRIVATE && LA63_0 <= PUBLIC) || (LA63_0 >= DYNAMIC && LA63_0 <= STATIC) || LA63_0 == IDENTIFIER) )
                {
                    alt63 = 1;
                }
                switch (alt63) 
                {
                    case 1 :
                        // AS3_ex.g3:0:0: memberModifiers
                        {
                            PushFollow(FOLLOW_memberModifiers_in_interfaceFunctionDeclaration7306);
                            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_interfaceFunctionDeclaration7311); 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);
                }
                // AS3_ex.g3:2124:5: (S= SET | G= GET )?
                int alt64 = 3;
                int LA64_0 = input.LA(1);

                if ( (LA64_0 == SET) )
                {
                    int LA64_1 = input.LA(2);

                    if ( (LA64_1 == NATIVE || LA64_1 == TO || (LA64_1 >= EACH && LA64_1 <= NAMESPACE) || (LA64_1 >= DYNAMIC && LA64_1 <= STATIC) || LA64_1 == IDENTIFIER) )
                    {
                        alt64 = 1;
                    }
                }
                else if ( (LA64_0 == GET) )
                {
                    int LA64_2 = input.LA(2);

                    if ( (LA64_2 == NATIVE || LA64_2 == TO || (LA64_2 >= EACH && LA64_2 <= NAMESPACE) || (LA64_2 >= DYNAMIC && LA64_2 <= STATIC) || LA64_2 == IDENTIFIER) )
                    {
                        alt64 = 2;
                    }
                }
                switch (alt64) 
                {
                    case 1 :
                        // AS3_ex.g3:2124:6: S= SET
                        {
                            S=(IToken)Match(input,SET,FOLLOW_SET_in_interfaceFunctionDeclaration7330); if (state.failed) return retval;
                            if ( state.backtracking == 0 )
                            {S_tree = (object)adaptor.Create(S);
                                adaptor.AddChild(root_0, S_tree);
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              emit(S);
                            }

                        }
                        break;
                    case 2 :
                        // AS3_ex.g3:2124:25: G= GET
                        {
                            G=(IToken)Match(input,GET,FOLLOW_GET_in_interfaceFunctionDeclaration7337); if (state.failed) return retval;
                            if ( state.backtracking == 0 )
                            {G_tree = (object)adaptor.Create(G);
                                adaptor.AddChild(root_0, G_tree);
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              emit(G);
                            }

                        }
                        break;

                }

                if ( state.backtracking == 0 ) 
                {
                  pushedWrapInfo=pushWrapInfo(options, true);
                }
                // AS3_ex.g3:2126:2: (I= IDENTIFIER | notQuiteReservedWord )
                int alt65 = 2;
                int LA65_0 = input.LA(1);

                if ( (LA65_0 == IDENTIFIER) )
                {
                    alt65 = 1;
                }
                else if ( (LA65_0 == NATIVE || LA65_0 == TO || (LA65_0 >= EACH && LA65_0 <= NAMESPACE) || (LA65_0 >= DYNAMIC && LA65_0 <= STATIC)) )
                {
                    alt65 = 2;
                }
                else 
                {
                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    NoViableAltException nvae_d65s0 =
                        new NoViableAltException("", 65, 0, input);

                    throw nvae_d65s0;
                }
                switch (alt65) 
                {
                    case 1 :
                        // AS3_ex.g3:2126:3: I= IDENTIFIER
                        {
                            I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceFunctionDeclaration7354); 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:2126:30: notQuiteReservedWord
                        {
                            PushFollow(FOLLOW_notQuiteReservedWord_in_interfaceFunctionDeclaration7360);
                            notQuiteReservedWord115 = notQuiteReservedWord();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, notQuiteReservedWord115.Tree);

                        }
                        break;

                }

                PushFollow(FOLLOW_formalParameterList_in_interfaceFunctionDeclaration7363);
                formalParameterList116 = formalParameterList();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList116.Tree);
                // AS3_ex.g3:2126:72: (C= COLON type )?
                int alt66 = 2;
                int LA66_0 = input.LA(1);

                if ( (LA66_0 == COLON) )
                {
                    alt66 = 1;
                }
                switch (alt66) 
                {
                    case 1 :
                        // AS3_ex.g3:2126:73: C= COLON type
                        {
                            C=(IToken)Match(input,COLON,FOLLOW_COLON_in_interfaceFunctionDeclaration7368); 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_interfaceFunctionDeclaration7372);
                            type117 = type();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type117.Tree);

                        }
                        break;

                }

                PushFollow(FOLLOW_semic_in_interfaceFunctionDeclaration7376);
                semic118 = semic();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic118.Tree);
                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, 49, interfaceFunctionDeclaration_StartIndex); 
            }
        }
        return retval;
    }