ES3Parser.arrayLiteral C# (CSharp) Method

arrayLiteral() public method

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

        object root_0 = null;

        IToken lb = null;
        IToken COMMA16 = null;
        IToken RBRACK17 = null;
        ES3Parser.arrayItem_return first = default(ES3Parser.arrayItem_return);

        ES3Parser.arrayItem_return follow = default(ES3Parser.arrayItem_return);


        object lb_tree=null;
        object COMMA16_tree=null;
        object RBRACK17_tree=null;


        	retval.value =  new ArrayDeclaration();

        try 
    	{
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:2: (lb= LBRACK (first= arrayItem ( COMMA follow= arrayItem )* )? RBRACK )
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:4: lb= LBRACK (first= arrayItem ( COMMA follow= arrayItem )* )? RBRACK
            {
            	root_0 = (object)adaptor.GetNilNode();

            	lb=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3253); 
            		lb_tree = (object)adaptor.Create(lb);
            		adaptor.AddChild(root_0, lb_tree);

            	// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:14: (first= arrayItem ( COMMA follow= arrayItem )* )?
            	int alt8 = 2;
            	int LA8_0 = input.LA(1);

            	if ( ((LA8_0 >= NULL && LA8_0 <= FALSE) || LA8_0 == DELETE || LA8_0 == FUNCTION || LA8_0 == NEW || LA8_0 == THIS || LA8_0 == TYPEOF || LA8_0 == VOID || LA8_0 == LBRACE || LA8_0 == LPAREN || LA8_0 == LBRACK || LA8_0 == COMMA || (LA8_0 >= ADD && LA8_0 <= SUB) || (LA8_0 >= INC && LA8_0 <= DEC) || (LA8_0 >= NOT && LA8_0 <= INV) || (LA8_0 >= Identifier && LA8_0 <= StringLiteral) || LA8_0 == RegularExpressionLiteral || (LA8_0 >= DecimalLiteral && LA8_0 <= HexIntegerLiteral)) )
            	{
            	    alt8 = 1;
            	}
            	else if ( (LA8_0 == RBRACK) )
            	{
            	    int LA8_2 = input.LA(2);

            	    if ( ((( input.LA(1) == COMMA )|| ( input.LA(1) == RBRACK ))) )
            	    {
            	        alt8 = 1;
            	    }
            	}
            	switch (alt8) 
            	{
            	    case 1 :
            	        // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:16: first= arrayItem ( COMMA follow= arrayItem )*
            	        {
            	        	PushFollow(FOLLOW_arrayItem_in_arrayLiteral3259);
            	        	first = arrayItem();
            	        	state.followingStackPointer--;

            	        	adaptor.AddChild(root_0, first.Tree);
            	        	 if(first.value != null) retval.value.Parameters.Add(first.value); 
            	        	// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:96: ( COMMA follow= arrayItem )*
            	        	do 
            	        	{
            	        	    int alt7 = 2;
            	        	    int LA7_0 = input.LA(1);

            	        	    if ( (LA7_0 == COMMA) )
            	        	    {
            	        	        alt7 = 1;
            	        	    }


            	        	    switch (alt7) 
            	        		{
            	        			case 1 :
            	        			    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:989:98: COMMA follow= arrayItem
            	        			    {
            	        			    	COMMA16=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3265); 
            	        			    		COMMA16_tree = (object)adaptor.Create(COMMA16);
            	        			    		adaptor.AddChild(root_0, COMMA16_tree);

            	        			    	PushFollow(FOLLOW_arrayItem_in_arrayLiteral3269);
            	        			    	follow = arrayItem();
            	        			    	state.followingStackPointer--;

            	        			    	adaptor.AddChild(root_0, follow.Tree);
            	        			    	 if(follow.value != null) retval.value.Parameters.Add(follow.value); 

            	        			    }
            	        			    break;

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

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


            	        }
            	        break;

            	}

            	RBRACK17=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3279); 
            		RBRACK17_tree = (object)adaptor.Create(RBRACK17);
            		adaptor.AddChild(root_0, RBRACK17_tree);


            }

            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 "arrayLiteral"
ES3Parser