ES3Parser.multiplicativeExpression C# (CSharp) Method

multiplicativeExpression() public method

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

        object root_0 = null;

        IToken MUL38 = null;
        IToken DIV39 = null;
        IToken MOD40 = null;
        ES3Parser.unaryExpression_return left = default(ES3Parser.unaryExpression_return);

        ES3Parser.unaryExpression_return right = default(ES3Parser.unaryExpression_return);


        object MUL38_tree=null;
        object DIV39_tree=null;
        object MOD40_tree=null;


        	BinaryExpressionType type = BinaryExpressionType.Unknown;

        try 
    	{
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1129:2: (left= unaryExpression ( ( MUL | DIV | MOD ) right= unaryExpression )* )
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1129:4: left= unaryExpression ( ( MUL | DIV | MOD ) right= unaryExpression )*
            {
            	root_0 = (object)adaptor.GetNilNode();

            	PushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3965);
            	left = unaryExpression();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, left.Tree);
            	 retval.value =  left.value; 
            	// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1129:50: ( ( MUL | DIV | MOD ) right= unaryExpression )*
            	do 
            	{
            	    int alt27 = 2;
            	    int LA27_0 = input.LA(1);

            	    if ( ((LA27_0 >= MUL && LA27_0 <= MOD) || LA27_0 == DIV) )
            	    {
            	        alt27 = 1;
            	    }


            	    switch (alt27) 
            		{
            			case 1 :
            			    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1130:3: ( MUL | DIV | MOD ) right= unaryExpression
            			    {
            			    	// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1130:3: ( MUL | DIV | MOD )
            			    	int alt26 = 3;
            			    	switch ( input.LA(1) ) 
            			    	{
            			    	case MUL:
            			    		{
            			    	    alt26 = 1;
            			    	    }
            			    	    break;
            			    	case DIV:
            			    		{
            			    	    alt26 = 2;
            			    	    }
            			    	    break;
            			    	case MOD:
            			    		{
            			    	    alt26 = 3;
            			    	    }
            			    	    break;
            			    		default:
            			    		    NoViableAltException nvae_d26s0 =
            			    		        new NoViableAltException("", 26, 0, input);

            			    		    throw nvae_d26s0;
            			    	}

            			    	switch (alt26) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1130:5: MUL
            			    	        {
            			    	        	MUL38=(IToken)Match(input,MUL,FOLLOW_MUL_in_multiplicativeExpression3976); 
            			    	        		MUL38_tree = (object)adaptor.Create(MUL38);
            			    	        		adaptor.AddChild(root_0, MUL38_tree);

            			    	        	 type= BinaryExpressionType.Times; 

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1131:5: DIV
            			    	        {
            			    	        	DIV39=(IToken)Match(input,DIV,FOLLOW_DIV_in_multiplicativeExpression3985); 
            			    	        		DIV39_tree = (object)adaptor.Create(DIV39);
            			    	        		adaptor.AddChild(root_0, DIV39_tree);

            			    	        	 type= BinaryExpressionType.Div; 

            			    	        }
            			    	        break;
            			    	    case 3 :
            			    	        // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1132:5: MOD
            			    	        {
            			    	        	MOD40=(IToken)Match(input,MOD,FOLLOW_MOD_in_multiplicativeExpression3993); 
            			    	        		MOD40_tree = (object)adaptor.Create(MOD40);
            			    	        		adaptor.AddChild(root_0, MOD40_tree);

            			    	        	 type= BinaryExpressionType.Modulo; 

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4004);
            			    	right = unaryExpression();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, right.Tree);
            			    	 retval.value =  new BinaryExpression(type, retval.value, right.value); 

            			    }
            			    break;

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

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


            }

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