ES3Parser.statement C# (CSharp) Method

statement() public method

public statement ( ) : ES3Parser.statement_return
return ES3Parser.statement_return
    public ES3Parser.statement_return statement() // throws RecognitionException [1]
    {   
        ES3Parser.statement_return retval = new ES3Parser.statement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        ES3Parser.functionDeclaration_return func = default(ES3Parser.functionDeclaration_return);

        ES3Parser.block_return block87 = default(ES3Parser.block_return);

        ES3Parser.statementTail_return statementTail88 = default(ES3Parser.statementTail_return);



        try 
    	{
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1410:2: ({...}? block | {...}?func= functionDeclaration | statementTail )
            int alt57 = 3;
            alt57 = dfa57.Predict(input);
            switch (alt57) 
            {
                case 1 :
                    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1410:4: {...}? block
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( !(( input.LA(1) == LBRACE )) ) 
                    	{
                    	    throw new FailedPredicateException(input, "statement", " input.LA(1) == LBRACE ");
                    	}
                    	PushFollow(FOLLOW_block_in_statement5218);
                    	block87 = block();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, block87.Tree);
                    	 retval.value =  ((block87 != null) ? block87.value : default(BlockStatement)); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1411:4: {...}?func= functionDeclaration
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	if ( !(( input.LA(1) == FUNCTION )) ) 
                    	{
                    	    throw new FailedPredicateException(input, "statement", " input.LA(1) == FUNCTION ");
                    	}
                    	PushFollow(FOLLOW_functionDeclaration_in_statement5229);
                    	func = functionDeclaration();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, func.Tree);
                    	 retval.value =  func.value; 

                    }
                    break;
                case 3 :
                    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1412:4: statementTail
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_statementTail_in_statement5236);
                    	statementTail88 = statementTail();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, statementTail88.Tree);
                    	 retval.value =  ((statementTail88 != null) ? statementTail88.value : default(Statement)); 

                    }
                    break;

            }
            retval.Stop = input.LT(-1);

            	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 
    	{
        }
        return retval;
    }
    // $ANTLR end "statement"
ES3Parser