Exemple #1
0
    // $ANTLR start "statement"
    // AS3_ex.g3:1783:1: statement : ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement );
    public AS3_exParser.statement_return statement() // throws RecognitionException [1]
    {   
        AS3_exParser.statement_return retval = new AS3_exParser.statement_return();
        retval.Start = input.LT(1);
        int statement_StartIndex = input.Index();
        object root_0 = null;

        AS3_exParser.blockStatement_return blockStatement130 = null;

        AS3_exParser.directive_return directive131 = null;

        AS3_exParser.namespaceDirective_return namespaceDirective132 = null;

        AS3_exParser.expression_return expression133 = null;

        AS3_exParser.semic_return semic134 = null;

        AS3_exParser.constantVarStatement_return constantVarStatement135 = null;

        AS3_exParser.tryStatement_return tryStatement136 = null;

        AS3_exParser.labelledStatement_return labelledStatement137 = null;

        AS3_exParser.switchStatement_return switchStatement138 = null;

        AS3_exParser.withStatement_return withStatement139 = null;

        AS3_exParser.returnStatement_return returnStatement140 = null;

        AS3_exParser.breakStatement_return breakStatement141 = null;

        AS3_exParser.continueStatement_return continueStatement142 = null;

        AS3_exParser.forStatement_return forStatement143 = null;

        AS3_exParser.forInStatement_return forInStatement144 = null;

        AS3_exParser.forEachInStatement_return forEachInStatement145 = null;

        AS3_exParser.doWhileStatement_return doWhileStatement146 = null;

        AS3_exParser.whileStatement_return whileStatement147 = null;

        AS3_exParser.ifStatement_return ifStatement148 = null;

        AS3_exParser.emptyStatement_return emptyStatement149 = null;

        AS3_exParser.variableStatement_return variableStatement150 = null;

        AS3_exParser.throwStatement_return throwStatement151 = null;



        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 58) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:1784:5: ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement )
            int alt76 = 21;
            alt76 = dfa76.Predict(input);
            switch (alt76) 
            {
                case 1 :
                    // AS3_ex.g3:1785:6: blockStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  SetBlockFlag(true);
                    	}
                    	PushFollow(FOLLOW_blockStatement_in_statement7673);
                    	blockStatement130 = blockStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, blockStatement130.Tree);

                    }
                    break;
                case 2 :
                    // AS3_ex.g3:1786:9: directive
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_directive_in_statement7684);
                    	directive131 = directive();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, directive131.Tree);

                    }
                    break;
                case 3 :
                    // AS3_ex.g3:1787:9: namespaceDirective
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_namespaceDirective_in_statement7695);
                    	namespaceDirective132 = namespaceDirective();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, namespaceDirective132.Tree);

                    }
                    break;
                case 4 :
                    // AS3_ex.g3:1788:9: expression semic
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_expression_in_statement7708);
                    	expression133 = expression();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expression133.Tree);
                    	PushFollow(FOLLOW_semic_in_statement7710);
                    	semic134 = semic();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic134.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 5 :
                    // AS3_ex.g3:1789:9: constantVarStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_constantVarStatement_in_statement7725);
                    	constantVarStatement135 = constantVarStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, constantVarStatement135.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 6 :
                    // AS3_ex.g3:1790:9: tryStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	PushFollow(FOLLOW_tryStatement_in_statement7738);
                    	tryStatement136 = tryStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, tryStatement136.Tree);

                    }
                    break;
                case 7 :
                    // AS3_ex.g3:1791:9: labelledStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_labelledStatement_in_statement7750);
                    	labelledStatement137 = labelledStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, labelledStatement137.Tree);

                    }
                    break;
                case 8 :
                    // AS3_ex.g3:1792:9: switchStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();
                    	}
                    	PushFollow(FOLLOW_switchStatement_in_statement7763);
                    	switchStatement138 = switchStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, switchStatement138.Tree);

                    }
                    break;
                case 9 :
                    // AS3_ex.g3:1793:9: withStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_withStatement_in_statement7775);
                    	withStatement139 = withStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, withStatement139.Tree);

                    }
                    break;
                case 10 :
                    // AS3_ex.g3:1794:9: returnStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_returnStatement_in_statement7789);
                    	returnStatement140 = returnStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, returnStatement140.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 11 :
                    // AS3_ex.g3:1795:9: breakStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_breakStatement_in_statement7805);
                    	breakStatement141 = breakStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, breakStatement141.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 12 :
                    // AS3_ex.g3:1796:9: continueStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_continueStatement_in_statement7821);
                    	continueStatement142 = continueStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, continueStatement142.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 13 :
                    // AS3_ex.g3:1797:9: forStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_forStatement_in_statement7835);
                    	forStatement143 = forStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forStatement143.Tree);

                    }
                    break;
                case 14 :
                    // AS3_ex.g3:1798:9: forInStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_forInStatement_in_statement7847);
                    	forInStatement144 = forInStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forInStatement144.Tree);

                    }
                    break;
                case 15 :
                    // AS3_ex.g3:1799:9: forEachInStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_forEachInStatement_in_statement7859);
                    	forEachInStatement145 = forEachInStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forEachInStatement145.Tree);

                    }
                    break;
                case 16 :
                    // AS3_ex.g3:1800:9: doWhileStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_doWhileStatement_in_statement7871);
                    	doWhileStatement146 = doWhileStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, doWhileStatement146.Tree);

                    }
                    break;
                case 17 :
                    // AS3_ex.g3:1801:9: whileStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  MarkBlockFlag();InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_whileStatement_in_statement7883);
                    	whileStatement147 = whileStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, whileStatement147.Tree);

                    }
                    break;
                case 18 :
                    // AS3_ex.g3:1802:9: ifStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertLines(mPrinter.GetBlankLinesBeforeControlStatement());
                    	}
                    	PushFollow(FOLLOW_ifStatement_in_statement7894);
                    	ifStatement148 = ifStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, ifStatement148.Tree);

                    }
                    break;
                case 19 :
                    // AS3_ex.g3:1803:9: emptyStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  if (mPrinter.IsEmptyStatementsOnNewLine())InsertStatementCR();
                    	}
                    	PushFollow(FOLLOW_emptyStatement_in_statement7905);
                    	emptyStatement149 = emptyStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, emptyStatement149.Tree);

                    }
                    break;
                case 20 :
                    // AS3_ex.g3:1804:9: variableStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_variableStatement_in_statement7919);
                    	variableStatement150 = variableStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, variableStatement150.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    break;
                case 21 :
                    // AS3_ex.g3:1805:9: throwStatement
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( state.backtracking == 0 ) 
                    	{
                    	  InsertStatementCR();
                    	}
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PushLazyIndent();
                    	}
                    	PushFollow(FOLLOW_throwStatement_in_statement7935);
                    	throwStatement151 = throwStatement();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, throwStatement151.Tree);
                    	if ( state.backtracking == 0 ) 
                    	{
                    	  PopIndent();
                    	}

                    }
                    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, 58, statement_StartIndex); 
            }
        }
        return retval;
    }
    // $ANTLR start "statement"
    // AS3_ex.g3:2270:1: statement : ( blockStatement | directive | namespaceDirective | constantVarStatement | tryStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | variableStatement | throwStatement | labelledStatement | expression semic | emptyStatement ) ;
    public AS3_exParser.statement_return statement() // throws RecognitionException [1]
    {   
        AS3_exParser.statement_return retval = new AS3_exParser.statement_return();
        retval.Start = input.LT(1);
        int statement_StartIndex = input.Index();
        object root_0 = null;

        AS3_exParser.blockStatement_return blockStatement141 = null;

        AS3_exParser.directive_return directive142 = null;

        AS3_exParser.namespaceDirective_return namespaceDirective143 = null;

        AS3_exParser.constantVarStatement_return constantVarStatement144 = null;

        AS3_exParser.tryStatement_return tryStatement145 = null;

        AS3_exParser.switchStatement_return switchStatement146 = null;

        AS3_exParser.withStatement_return withStatement147 = null;

        AS3_exParser.returnStatement_return returnStatement148 = null;

        AS3_exParser.breakStatement_return breakStatement149 = null;

        AS3_exParser.continueStatement_return continueStatement150 = null;

        AS3_exParser.forStatement_return forStatement151 = null;

        AS3_exParser.forInStatement_return forInStatement152 = null;

        AS3_exParser.forEachInStatement_return forEachInStatement153 = null;

        AS3_exParser.doWhileStatement_return doWhileStatement154 = null;

        AS3_exParser.whileStatement_return whileStatement155 = null;

        AS3_exParser.ifStatement_return ifStatement156 = null;

        AS3_exParser.variableStatement_return variableStatement157 = null;

        AS3_exParser.throwStatement_return throwStatement158 = null;

        AS3_exParser.labelledStatement_return labelledStatement159 = null;

        AS3_exParser.expression_return expression160 = null;

        AS3_exParser.semic_return semic161 = null;

        AS3_exParser.emptyStatement_return emptyStatement162 = null;



        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 58) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:2271:5: ( ( blockStatement | directive | namespaceDirective | constantVarStatement | tryStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | variableStatement | throwStatement | labelledStatement | expression semic | emptyStatement ) )
            // AS3_ex.g3:2272:6: ( blockStatement | directive | namespaceDirective | constantVarStatement | tryStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | variableStatement | throwStatement | labelledStatement | expression semic | emptyStatement )
            {
                root_0 = (object)adaptor.GetNilNode();

                if ( state.backtracking == 0 ) 
                {
                  mStatementCount++;
                }
                // AS3_ex.g3:2273:5: ( blockStatement | directive | namespaceDirective | constantVarStatement | tryStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | variableStatement | throwStatement | labelledStatement | expression semic | emptyStatement )
                int alt83 = 21;
                alt83 = dfa83.Predict(input);
                switch (alt83) 
                {
                    case 1 :
                        // AS3_ex.g3:2273:7: blockStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inOther();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              setBlockFlag(true);
                            }
                            PushFollow(FOLLOW_blockStatement_in_statement8177);
                            blockStatement141 = blockStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, blockStatement141.Tree);

                        }
                        break;
                    case 2 :
                        // AS3_ex.g3:2274:9: directive
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            PushFollow(FOLLOW_directive_in_statement8188);
                            directive142 = directive();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, directive142.Tree);

                        }
                        break;
                    case 3 :
                        // AS3_ex.g3:2275:9: namespaceDirective
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            PushFollow(FOLLOW_namespaceDirective_in_statement8199);
                            namespaceDirective143 = namespaceDirective();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, namespaceDirective143.Tree);

                        }
                        break;
                    case 4 :
                        // AS3_ex.g3:2276:9: constantVarStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_constantVarStatement_in_statement8212);
                            constantVarStatement144 = constantVarStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, constantVarStatement144.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }

                        }
                        break;
                    case 5 :
                        // AS3_ex.g3:2277:9: tryStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            PushFollow(FOLLOW_tryStatement_in_statement8225);
                            tryStatement145 = tryStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, tryStatement145.Tree);

                        }
                        break;
                    case 6 :
                        // AS3_ex.g3:2278:9: switchStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();
                            }
                            PushFollow(FOLLOW_switchStatement_in_statement8237);
                            switchStatement146 = switchStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, switchStatement146.Tree);

                        }
                        break;
                    case 7 :
                        // AS3_ex.g3:2279:9: withStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_withStatement_in_statement8251);
                            withStatement147 = withStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, withStatement147.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 8 :
                        // AS3_ex.g3:2280:9: returnStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_returnStatement_in_statement8265);
                            returnStatement148 = returnStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, returnStatement148.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }

                        }
                        break;
                    case 9 :
                        // AS3_ex.g3:2281:9: breakStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_breakStatement_in_statement8279);
                            breakStatement149 = breakStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, breakStatement149.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }

                        }
                        break;
                    case 10 :
                        // AS3_ex.g3:2282:9: continueStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_continueStatement_in_statement8293);
                            continueStatement150 = continueStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, continueStatement150.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }

                        }
                        break;
                    case 11 :
                        // AS3_ex.g3:2283:9: forStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inLoop();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_forStatement_in_statement8310);
                            forStatement151 = forStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forStatement151.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 12 :
                        // AS3_ex.g3:2284:9: forInStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inLoop();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_forInStatement_in_statement8327);
                            forInStatement152 = forInStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forInStatement152.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 13 :
                        // AS3_ex.g3:2285:9: forEachInStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inLoop();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_forEachInStatement_in_statement8344);
                            forEachInStatement153 = forEachInStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, forEachInStatement153.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 14 :
                        // AS3_ex.g3:2286:9: doWhileStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inLoop();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_doWhileStatement_in_statement8361);
                            doWhileStatement154 = doWhileStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, doWhileStatement154.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 15 :
                        // AS3_ex.g3:2287:9: whileStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inLoop();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              markBlockFlag();insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_whileStatement_in_statement8378);
                            whileStatement155 = whileStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, whileStatement155.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 16 :
                        // AS3_ex.g3:2288:9: ifStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.inCondition();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            PushFollow(FOLLOW_ifStatement_in_statement8393);
                            ifStatement156 = ifStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, ifStatement156.Tree);

                        }
                        break;
                    case 17 :
                        // AS3_ex.g3:2289:9: variableStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_variableStatement_in_statement8407);
                            variableStatement157 = variableStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, variableStatement157.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.adjustLastLineIndent();
                            }

                        }
                        break;
                    case 18 :
                        // AS3_ex.g3:2290:9: throwStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            PushFollow(FOLLOW_throwStatement_in_statement8422);
                            throwStatement158 = throwStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, throwStatement158.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }

                        }
                        break;
                    case 19 :
                        // AS3_ex.g3:2291:9: labelledStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              insertLines(mPrinter.getBlankLinesBeforeControlStatement());
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              insertStatementCR();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mCodeBlockStack.Add(ASPrettyPrinter.BraceContext_controlStatement_code);
                            }
                            PushFollow(FOLLOW_labelledStatement_in_statement8438);
                            labelledStatement159 = labelledStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, labelledStatement159.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popBlockStack();
                            }

                        }
                        break;
                    case 20 :
                        // AS3_ex.g3:2292:9: expression semic
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              pushLazyIndent();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.markDeclEqualsContextChange();
                            }
                            if ( state.backtracking == 0 ) 
                            {

                                            if (mPrinter.statementNeedsCR(input.LT(1)))
                                                insertStatementCR();
                                            else
                                                insertWS(1);
                                        
                            }
                            PushFollow(FOLLOW_expression_in_statement8470);
                            expression160 = expression();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expression160.Tree);
                            PushFollow(FOLLOW_semic_in_statement8472);
                            semic161 = semic();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic161.Tree);
                            if ( state.backtracking == 0 ) 
                            {
                              popIndent();
                            }
                            if ( state.backtracking == 0 ) 
                            {
                              mPrinter.adjustLastLineIndent();
                            }

                        }
                        break;
                    case 21 :
                        // AS3_ex.g3:2300:9: emptyStatement
                        {
                            if ( state.backtracking == 0 ) 
                            {
                              if (mPrinter.isEmptyStatementsOnNewLine())insertStatementCR();
                            }
                            PushFollow(FOLLOW_emptyStatement_in_statement8487);
                            emptyStatement162 = emptyStatement();
                            state.followingStackPointer--;
                            if (state.failed) return retval;
                            if ( state.backtracking == 0 ) adaptor.AddChild(root_0, emptyStatement162.Tree);

                        }
                        break;

                }

                if ( state.backtracking == 0 ) 
                {
                  mPrinter.inOther();
                }

            }

            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, 58, statement_StartIndex); 
            }
        }
        return retval;
    }