Example #1
0
    // $ANTLR start "doWhileStatement"
    // AS3_ex.g3:2007:1: doWhileStatement : D= DO statement W= WHILE parExpression semic (S= SEMI )? ;
    public AS3_exParser.doWhileStatement_return doWhileStatement() // throws RecognitionException [1]
    {   
        AS3_exParser.doWhileStatement_return retval = new AS3_exParser.doWhileStatement_return();
        retval.Start = input.LT(1);
        int doWhileStatement_StartIndex = input.Index();
        object root_0 = null;

        IToken D = null;
        IToken W = null;
        IToken S = null;
        AS3_exParser.statement_return statement201 = null;

        AS3_exParser.parExpression_return parExpression202 = null;

        AS3_exParser.semic_return semic203 = null;


        object D_tree=null;
        object W_tree=null;
        object S_tree=null;

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 83) ) 
    	    {
    	    	return retval; 
    	    }
            // AS3_ex.g3:2008:5: (D= DO statement W= WHILE parExpression semic (S= SEMI )? )
            // AS3_ex.g3:2008:9: D= DO statement W= WHILE parExpression semic (S= SEMI )?
            {
            	root_0 = (object)adaptor.GetNilNode();

            	D=(IToken)Match(input,DO,FOLLOW_DO_in_doWhileStatement9186); if (state.failed) return retval;
            	if ( state.backtracking == 0 )
            	{D_tree = (object)adaptor.Create(D);
            		adaptor.AddChild(root_0, D_tree);
            	}
            	if ( state.backtracking == 0 ) 
            	{
            	  Emit((CommonToken)D);
            	}
            	if ( state.backtracking == 0 ) 
            	{
            	  PushIndent(false);
            	}
            	PushFollow(FOLLOW_statement_in_doWhileStatement9192);
            	statement201 = statement();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement201.Tree);
            	if ( state.backtracking == 0 ) 
            	{
            	  PopIndent();
            	}
            	if ( state.backtracking == 0 ) 
            	{
            	  InsertWS(1);
            	}
            	if ( state.backtracking == 0 ) 
            	{
            	  PushExpressionIndent();
            	}
            	W=(IToken)Match(input,WHILE,FOLLOW_WHILE_in_doWhileStatement9201); if (state.failed) return retval;
            	if ( state.backtracking == 0 )
            	{W_tree = (object)adaptor.Create(W);
            		adaptor.AddChild(root_0, W_tree);
            	}
            	if ( state.backtracking == 0 ) 
            	{
            	  Emit((CommonToken)W);InsertWS(mPrinter.GetSpacesBetweenControlKeywordsAndParens());
            	}
            	PushFollow(FOLLOW_parExpression_in_doWhileStatement9205);
            	parExpression202 = parExpression();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, parExpression202.Tree);
            	PushFollow(FOLLOW_semic_in_doWhileStatement9207);
            	semic203 = semic();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic203.Tree);
            	// AS3_ex.g3:2008:240: (S= SEMI )?
            	int alt97 = 2;
            	int LA97_0 = input.LA(1);

            	if ( (LA97_0 == SEMI) )
            	{
            	    int LA97_1 = input.LA(2);

            	    if ( (synpred210_AS3_ex()) )
            	    {
            	        alt97 = 1;
            	    }
            	}
            	switch (alt97) 
            	{
            	    case 1 :
            	        // AS3_ex.g3:2008:241: S= SEMI
            	        {
            	        	S=(IToken)Match(input,SEMI,FOLLOW_SEMI_in_doWhileStatement9212); 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;

            	}

            	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, 83, doWhileStatement_StartIndex); 
            }
        }
        return retval;
    }
Example #2
0
    // $ANTLR start "doWhileStatement"
    // AS3_ex.g3:2650:1: doWhileStatement : D= DO statement W= WHILE parExpression semic (S= SEMI )? ;
    public AS3_exParser.doWhileStatement_return doWhileStatement() // throws RecognitionException [1]
    {   
        AS3_exParser.doWhileStatement_return retval = new AS3_exParser.doWhileStatement_return();
        retval.Start = input.LT(1);
        int doWhileStatement_StartIndex = input.Index();
        object root_0 = null;

        IToken D = null;
        IToken W = null;
        IToken S = null;
        AS3_exParser.statement_return statement212 = null;

        AS3_exParser.parExpression_return parExpression213 = null;

        AS3_exParser.semic_return semic214 = null;


        object D_tree=null;
        object W_tree=null;
        object S_tree=null;


            int statementCount=0;

        try 
        {
            if ( (state.backtracking > 0) && AlreadyParsedRule(input, 83) ) 
            {
                return retval; 
            }
            // AS3_ex.g3:2655:5: (D= DO statement W= WHILE parExpression semic (S= SEMI )? )
            // AS3_ex.g3:2656:5: D= DO statement W= WHILE parExpression semic (S= SEMI )?
            {
                root_0 = (object)adaptor.GetNilNode();

                if ( state.backtracking == 0 ) 
                {
                  mPrinter.markDeclEqualsContextChange();
                }
                D=(IToken)Match(input,DO,FOLLOW_DO_in_doWhileStatement10032); if (state.failed) return retval;
                if ( state.backtracking == 0 )
                {D_tree = (object)adaptor.Create(D);
                    adaptor.AddChild(root_0, D_tree);
                }
                if ( state.backtracking == 0 ) 
                {
                  emit(D);
                }
                if ( state.backtracking == 0 ) 
                {
                  pushIndent(false);
                }
                if ( state.backtracking == 0 ) 
                {
                  mPrinter.addOpenBrace(input, ASPrettyPrinter.BraceAdd_Loop);statementCount=mStatementCount;
                }
                PushFollow(FOLLOW_statement_in_doWhileStatement10052);
                statement212 = statement();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, statement212.Tree);
                if ( state.backtracking == 0 ) 
                {
                  mPrinter.addCloseBrace(input.LT(1), ASPrettyPrinter.BraceAdd_Loop, mStatementCount-statementCount);
                }
                if ( state.backtracking == 0 ) 
                {
                  popIndent();
                }
                if ( state.backtracking == 0 ) 
                {
                  insertWS(1);
                }
                if ( state.backtracking == 0 ) 
                {

                            if (mPrinter.isCRBeforeWhile() || !mPrinter.didLastStatementHaveBraces()) //add CR if explictly asked for or if there were no statement braces   
                                insertCR(false);
                        
                }
                W=(IToken)Match(input,WHILE,FOLLOW_WHILE_in_doWhileStatement10091); if (state.failed) return retval;
                if ( state.backtracking == 0 )
                {W_tree = (object)adaptor.Create(W);
                    adaptor.AddChild(root_0, W_tree);
                }
                if ( state.backtracking == 0 ) 
                {
                  emit(W);{pushExpressionIndent();}insertWS(mPrinter.getSpacesBetweenControlKeywordsAndParens());
                }
                PushFollow(FOLLOW_parExpression_in_doWhileStatement10095);
                parExpression213 = parExpression();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, parExpression213.Tree);
                PushFollow(FOLLOW_semic_in_doWhileStatement10097);
                semic214 = semic();
                state.followingStackPointer--;
                if (state.failed) return retval;
                if ( state.backtracking == 0 ) adaptor.AddChild(root_0, semic214.Tree);
                // AS3_ex.g3:2666:133: (S= SEMI )?
                int alt104 = 2;
                int LA104_0 = input.LA(1);

                if ( (LA104_0 == SEMI) )
                {
                    int LA104_1 = input.LA(2);

                    if ( (synpred220_AS3_ex()) )
                    {
                        alt104 = 1;
                    }
                }
                switch (alt104) 
                {
                    case 1 :
                        // AS3_ex.g3:2666:134: S= SEMI
                        {
                            S=(IToken)Match(input,SEMI,FOLLOW_SEMI_in_doWhileStatement10102); 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;

                }

                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, 83, doWhileStatement_StartIndex); 
            }
        }
        return retval;
    }