Beispiel #1
0
    // $ANTLR start "classBodyElement"
    // AS3_ex.g3:1655:1: classBodyElement : ( propertyDeclaration | functionDeclaration | statement | directive );
    public AS3_exParser.classBodyElement_return classBodyElement() // throws RecognitionException [1]
    {   
        AS3_exParser.classBodyElement_return retval = new AS3_exParser.classBodyElement_return();
        retval.Start = input.LT(1);
        int classBodyElement_StartIndex = input.Index();
        object root_0 = null;

        AS3_exParser.propertyDeclaration_return propertyDeclaration94 = null;

        AS3_exParser.functionDeclaration_return functionDeclaration95 = null;

        AS3_exParser.statement_return statement96 = null;

        AS3_exParser.directive_return directive97 = null;



        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 47) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:1656:5: ( propertyDeclaration | functionDeclaration | statement | directive )
            int alt54 = 4;
            alt54 = dfa54.Predict(input);
            switch (alt54) 
            {
                case 1 :
                    // AS3_ex.g3:1656:9: propertyDeclaration
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_propertyDeclaration_in_classBodyElement6806);
                    	propertyDeclaration94 = propertyDeclaration();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, propertyDeclaration94.Tree);

                    }
                    break;
                case 2 :
                    // AS3_ex.g3:1656:31: functionDeclaration
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_functionDeclaration_in_classBodyElement6810);
                    	functionDeclaration95 = functionDeclaration();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionDeclaration95.Tree);

                    }
                    break;
                case 3 :
                    // AS3_ex.g3:1656:53: statement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_statement_in_classBodyElement6814);
                    	statement96 = statement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement96.Tree);

                    }
                    break;
                case 4 :
                    // AS3_ex.g3:1656:65: directive
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_directive_in_classBodyElement6818);
                    	directive97 = directive();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, directive97.Tree);

                    }
                    break;

            }
            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, 47, classBodyElement_StartIndex); 
            }
        }
        return retval;
    }
    // $ANTLR start "classBodyElement"
    // AS3_ex.g3:2075:1: classBodyElement : ( ( conditionalCompilerOption LCURLY )=> conditionalCompilerOption l= LCURLY ( classBodyElement )* r= RCURLY | propertyDeclaration | functionDeclaration | statement | directive );
    public AS3_exParser.classBodyElement_return classBodyElement() // throws RecognitionException [1]
    {   
        AS3_exParser.classBodyElement_return retval = new AS3_exParser.classBodyElement_return();
        retval.Start = input.LT(1);
        int classBodyElement_StartIndex = input.Index();
        object root_0 = null;

        IToken l = null;
        IToken r = null;
        AS3_exParser.conditionalCompilerOption_return conditionalCompilerOption101 = null;

        AS3_exParser.classBodyElement_return classBodyElement102 = null;

        AS3_exParser.propertyDeclaration_return propertyDeclaration103 = null;

        AS3_exParser.functionDeclaration_return functionDeclaration104 = null;

        AS3_exParser.statement_return statement105 = null;

        AS3_exParser.directive_return directive106 = null;


        object l_tree=null;
        object r_tree=null;

        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 47) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:2076:5: ( ( conditionalCompilerOption LCURLY )=> conditionalCompilerOption l= LCURLY ( classBodyElement )* r= RCURLY | propertyDeclaration | functionDeclaration | statement | directive )
            int alt59 = 5;
            alt59 = dfa59.Predict(input);
            switch (alt59) 
            {
                case 1 :
                    // AS3_ex.g3:2076:7: ( conditionalCompilerOption LCURLY )=> conditionalCompilerOption l= LCURLY ( classBodyElement )* r= RCURLY
                    {
                        root_0 = (object)adaptor.GetNilNode();

                        if ( state.backtracking == 0 ) 
                        {
                          insertCR(false);
                        }
                        PushFollow(FOLLOW_conditionalCompilerOption_in_classBodyElement7108);
                        conditionalCompilerOption101 = conditionalCompilerOption();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, conditionalCompilerOption101.Tree);
                        l=(IToken)Match(input,LCURLY,FOLLOW_LCURLY_in_classBodyElement7116); if (state.failed) return retval;
                        if ( state.backtracking == 0 )
                        {l_tree = (object)adaptor.Create(l);
                            adaptor.AddChild(root_0, l_tree);
                        }
                        if ( state.backtracking == 0 ) 
                        {
                           
                                        mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_Conditional_code);
                                        leftCurlyNewlineHandler(false);
                                        emit(l);pushIndent(true);
                                        {mPrinter.addDeclEqualsBlock();}
                                        mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_block_code);
                                    
                        }
                        // AS3_ex.g3:2086:4: ( classBodyElement )*
                        do 
                        {
                            int alt58 = 2;
                            int LA58_0 = input.LA(1);

                            if ( ((LA58_0 >= AS && LA58_0 <= LCURLY) || LA58_0 == LPAREN || LA58_0 == LBRACK || LA58_0 == LT || (LA58_0 >= PLUS && LA58_0 <= STAR) || (LA58_0 >= INC && LA58_0 <= DEC) || (LA58_0 >= NOT && LA58_0 <= INV) || (LA58_0 >= XML_AT && LA58_0 <= XML_LS_STD) || (LA58_0 >= SINGLE_QUOTE_LITERAL && LA58_0 <= DOUBLE_QUOTE_LITERAL) || LA58_0 == REGULAR_EXPR_LITERAL || LA58_0 == HEX_NUMBER_LITERAL || LA58_0 == DEC_NUMBER_LITERAL || LA58_0 == IDENTIFIER || (LA58_0 >= XML_COMMENT && LA58_0 <= XML_PI)) )
                            {
                                alt58 = 1;
                            }


                            switch (alt58) 
                            {
                                case 1 :
                                    // AS3_ex.g3:0:0: classBodyElement
                                    {
                                        PushFollow(FOLLOW_classBodyElement_in_classBodyElement7126);
                                        classBodyElement102 = classBodyElement();
                                        state.followingStackPointer--;
                                        if (state.failed) return retval;
                                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, classBodyElement102.Tree);

                                    }
                                    break;

                                default:
                                    goto loop58;
                            }
                        } while (true);

                        loop58:
                            ;   // Stops C# compiler whining that label 'loop58' has no statements

                        if ( state.backtracking == 0 ) 
                        {
                          popIndent();
                        }
                        if ( state.backtracking == 0 ) 
                        {
                          mPrinter.popDeclEqualsBlock();
                        }
                        r=(IToken)Match(input,RCURLY,FOLLOW_RCURLY_in_classBodyElement7145); if (state.failed) return retval;
                        if ( state.backtracking == 0 )
                        {r_tree = (object)adaptor.Create(r);
                            adaptor.AddChild(root_0, r_tree);
                        }
                        if ( state.backtracking == 0 ) 
                        {
                          insertCR(false);emit(r);popBlockStack();popBlockStack();
                        }

                    }
                    break;
                case 2 :
                    // AS3_ex.g3:2090:7: propertyDeclaration
                    {
                        root_0 = (object)adaptor.GetNilNode();

                        PushFollow(FOLLOW_propertyDeclaration_in_classBodyElement7159);
                        propertyDeclaration103 = propertyDeclaration();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, propertyDeclaration103.Tree);

                    }
                    break;
                case 3 :
                    // AS3_ex.g3:2090:29: functionDeclaration
                    {
                        root_0 = (object)adaptor.GetNilNode();

                        PushFollow(FOLLOW_functionDeclaration_in_classBodyElement7163);
                        functionDeclaration104 = functionDeclaration();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, functionDeclaration104.Tree);

                    }
                    break;
                case 4 :
                    // AS3_ex.g3:2090:51: statement
                    {
                        root_0 = (object)adaptor.GetNilNode();

                        PushFollow(FOLLOW_statement_in_classBodyElement7167);
                        statement105 = statement();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement105.Tree);

                    }
                    break;
                case 5 :
                    // AS3_ex.g3:2090:63: directive
                    {
                        root_0 = (object)adaptor.GetNilNode();

                        PushFollow(FOLLOW_directive_in_classBodyElement7171);
                        directive106 = directive();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking == 0 ) adaptor.AddChild(root_0, directive106.Tree);

                    }
                    break;

            }
            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, 47, classBodyElement_StartIndex); 
            }
        }
        return retval;
    }