Esempio n. 1
0
    // $ANTLR start "functionExpression"
    // AS3_ex.g3:1694:1: functionExpression : F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody ;
    public AS3_exParser.functionExpression_return functionExpression() // throws RecognitionException [1]
    {   
        AS3_exParser.functionExpression_return retval = new AS3_exParser.functionExpression_return();
        retval.Start = input.LT(1);
        int functionExpression_StartIndex = input.Index();
        object root_0 = null;

        IToken F = null;
        IToken I = null;
        IToken C = null;
        AS3_exParser.formalParameterList_return formalParameterList119 = null;

        AS3_exParser.type_return type120 = null;

        AS3_exParser.functionBody_return functionBody121 = null;


        object F_tree=null;
        object I_tree=null;
        object C_tree=null;

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 52) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:1697:5: (F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody )
            // AS3_ex.g3:1697:9: F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody
            {
            	root_0 = (object)adaptor.GetNilNode();

            	F=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression7110); 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:1697:45: (I= IDENTIFIER )?
            	int alt69 = 2;
            	int LA69_0 = input.LA(1);

            	if ( (LA69_0 == IDENTIFIER) )
            	{
            	    alt69 = 1;
            	}
            	switch (alt69) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1697:46: I= IDENTIFIER
            	        {
            	        	I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionExpression7117); 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;

            	}

            	PushFollow(FOLLOW_formalParameterList_in_functionExpression7122);
            	formalParameterList119 = formalParameterList();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList119.Tree);
            	// AS3_ex.g3:1697:105: (C= COLON type )?
            	int alt70 = 2;
            	int LA70_0 = input.LA(1);

            	if ( (LA70_0 == COLON) )
            	{
            	    alt70 = 1;
            	}
            	switch (alt70) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:1697:106: C= COLON type
            	        {
            	        	C=(IToken)Match(input,COLON,FOLLOW_COLON_in_functionExpression7127); 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_functionExpression7131);
            	        	type120 = type();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type120.Tree);

            	        }
            	        break;

            	}

            	if ( state.backtracking == 0 ) 
            	{
            	  PopIndent();
            	}
            	PushFollow(FOLLOW_functionBody_in_functionExpression7137);
            	functionBody121 = functionBody();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionBody121.Tree);
            	if ( state.backtracking == 0 ) 
            	{
            	  PushExpressionIndent();
            	}

            }

            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, 52, functionExpression_StartIndex); 
            }
        }
        return retval;
    }
Esempio n. 2
0
    // $ANTLR start "functionExpression"
    // AS3_ex.g3:2158:1: functionExpression : F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody ;
    public AS3_exParser.functionExpression_return functionExpression() // throws RecognitionException [1]
    {   
        AS3_exParser.functionExpression_return retval = new AS3_exParser.functionExpression_return();
        retval.Start = input.LT(1);
        int functionExpression_StartIndex = input.Index();
        object root_0 = null;

        IToken F = null;
        IToken I = null;
        IToken C = null;
        AS3_exParser.formalParameterList_return formalParameterList130 = null;

        AS3_exParser.type_return type131 = null;

        AS3_exParser.functionBody_return functionBody132 = null;


        object F_tree=null;
        object I_tree=null;
        object C_tree=null;

        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 52) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:2161:2: (F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody )
            // AS3_ex.g3:2161:6: F= FUNCTION (I= IDENTIFIER )? formalParameterList (C= COLON type )? functionBody
            {
                root_0 = (object)adaptor.GetNilNode();

                F=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression7582); 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);pushIndent(false);
                }
                // AS3_ex.g3:2161:47: (I= IDENTIFIER )?
                int alt75 = 2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0 == IDENTIFIER) )
                {
                    alt75 = 1;
                }
                switch (alt75) 
                {
                    case 1 :
                        // AS3_ex.g3:2161:48: I= IDENTIFIER
                        {
                            I=(IToken)Match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionExpression7589); 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;

                }

                PushFollow(FOLLOW_formalParameterList_in_functionExpression7594);
                formalParameterList130 = formalParameterList();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, formalParameterList130.Tree);
                // AS3_ex.g3:2161:94: (C= COLON type )?
                int alt76 = 2;
                int LA76_0 = input.LA(1);

                if ( (LA76_0 == COLON) )
                {
                    alt76 = 1;
                }
                switch (alt76) 
                {
                    case 1 :
                        // AS3_ex.g3:2161:95: C= COLON type
                        {
                            C=(IToken)Match(input,COLON,FOLLOW_COLON_in_functionExpression7599); 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_functionExpression7603);
                            type131 = type();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, type131.Tree);

                        }
                        break;

                }

                if ( state.backtracking == 0 ) 
                {
                  mIsFunctionDecl=false;
                }
                if ( state.backtracking == 0 ) 
                {
                  popIndent();
                }
                if ( state.backtracking == 0 ) 
                {
                  mPrinter.pushFunctionExpressionStatementIndent();
                }
                PushFollow(FOLLOW_functionBody_in_functionExpression7617);
                functionBody132 = functionBody();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionBody132.Tree);
                if ( state.backtracking == 0 ) 
                {
                  popIndent();
                }

            }

            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, 52, functionExpression_StartIndex); 
            }
        }
        return retval;
    }