Наследование: Antlr.Runtime.ParserRuleReturnScope
Пример #1
0
    // $ANTLR start "forstatement"
    // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:273:1: forstatement returns [ForStatementElement ret] : 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr )+ RIGHTPARANTHESIS ;
    public spinachParser.forstatement_return forstatement() // throws RecognitionException [1]
    {   
        spinachParser.forstatement_return retval = new spinachParser.forstatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal124 = null;
        IToken LEFTBRACE125 = null;
        IToken POINT126 = null;
        IToken string_literal127 = null;
        IToken RIGHTBRACE128 = null;
        IToken LEFTPARANTHESIS129 = null;
        IToken RIGHTPARANTHESIS130 = null;
        spinachParser.variable_return r11 = null;

        spinachParser.int_literal_return r12 = null;

        spinachParser.int_literal_return r13 = null;

        spinachParser.forexpr_return e11 = null;


        object string_literal124_tree=null;
        object LEFTBRACE125_tree=null;
        object POINT126_tree=null;
        object string_literal127_tree=null;
        object RIGHTBRACE128_tree=null;
        object LEFTPARANTHESIS129_tree=null;
        object RIGHTPARANTHESIS130_tree=null;


           retval.ret = new ForStatementElement();

        try 
    	{
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:276:2: ( 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr )+ RIGHTPARANTHESIS )
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:276:3: 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr )+ RIGHTPARANTHESIS
            {
            	root_0 = (object)adaptor.GetNilNode();

            	string_literal124=(IToken)Match(input,42,FOLLOW_42_in_forstatement1618); 
            		string_literal124_tree = (object)adaptor.Create(string_literal124);
            		adaptor.AddChild(root_0, string_literal124_tree);

            	LEFTBRACE125=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_forstatement1620); 
            		LEFTBRACE125_tree = (object)adaptor.Create(LEFTBRACE125);
            		adaptor.AddChild(root_0, LEFTBRACE125_tree);

            	PushFollow(FOLLOW_variable_in_forstatement1626);
            	r11 = variable();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r11.Tree);
            	retval.ret.RANGEVARIABLE = ((r11 != null) ? r11.ret : null);
            	POINT126=(IToken)Match(input,POINT,FOLLOW_POINT_in_forstatement1629); 
            		POINT126_tree = (object)adaptor.Create(POINT126);
            		adaptor.AddChild(root_0, POINT126_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1635);
            	r12 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r12.Tree);
            	retval.ret.STARTINGRANGE = ((r12 != null) ? r12.ret : null);
            	string_literal127=(IToken)Match(input,38,FOLLOW_38_in_forstatement1638); 
            		string_literal127_tree = (object)adaptor.Create(string_literal127);
            		adaptor.AddChild(root_0, string_literal127_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1643);
            	r13 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r13.Tree);
            	retval.ret.ENDINGRANGE = ((r13 != null) ? r13.ret : null);
            	RIGHTBRACE128=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_forstatement1646); 
            		RIGHTBRACE128_tree = (object)adaptor.Create(RIGHTBRACE128);
            		adaptor.AddChild(root_0, RIGHTBRACE128_tree);

            	LEFTPARANTHESIS129=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_forstatement1648); 
            		LEFTPARANTHESIS129_tree = (object)adaptor.Create(LEFTPARANTHESIS129);
            		adaptor.AddChild(root_0, LEFTPARANTHESIS129_tree);

            	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:276:219: (e11= forexpr )+
            	int cnt38 = 0;
            	do 
            	{
            	    int alt38 = 2;
            	    int LA38_0 = input.LA(1);

            	    if ( (LA38_0 == VARIABLE || LA38_0 == VARTYPE || LA38_0 == STRINGTYPE || LA38_0 == 28 || LA38_0 == 32 || LA38_0 == 35 || LA38_0 == 40 || LA38_0 == 42 || LA38_0 == 46 || LA38_0 == 48 || (LA38_0 >= 52 && LA38_0 <= 56)) )
            	    {
            	        alt38 = 1;
            	    }


            	    switch (alt38) 
            		{
            			case 1 :
            			    // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:276:220: e11= forexpr
            			    {
            			    	PushFollow(FOLLOW_forexpr_in_forstatement1653);
            			    	e11 = forexpr();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, e11.Tree);
            			    	retval.ret.ADDCODE =((e11 != null) ? e11.ret : null);

            			    }
            			    break;

            			default:
            			    if ( cnt38 >= 1 ) goto loop38;
            		            EarlyExitException eee38 =
            		                new EarlyExitException(38, input);
            		            throw eee38;
            	    }
            	    cnt38++;
            	} while (true);

            	loop38:
            		;	// Stops C# compiler whinging that label 'loop38' has no statements

            	RIGHTPARANTHESIS130=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_forstatement1658); 
            		RIGHTPARANTHESIS130_tree = (object)adaptor.Create(RIGHTPARANTHESIS130);
            		adaptor.AddChild(root_0, RIGHTPARANTHESIS130_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;
    }
Пример #2
0
    // $ANTLR start "forstatement"
    // spinach.g:246:1: forstatement returns [ForStatementElement ret] : 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS ;
    public spinachParser.forstatement_return forstatement() // throws RecognitionException [1]
    {   
        spinachParser.forstatement_return retval = new spinachParser.forstatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal104 = null;
        IToken LEFTPARANTHESIS105 = null;
        IToken RIGHTPARANTHESIS106 = null;
        spinachParser.range_return r11 = null;

        spinachParser.expr1_return e11 = null;


        object string_literal104_tree=null;
        object LEFTPARANTHESIS105_tree=null;
        object RIGHTPARANTHESIS106_tree=null;


           retval.ret = new ForStatementElement();

        try 
    	{
            // spinach.g:249:2: ( 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS )
            // spinach.g:249:3: 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS
            {
            	root_0 = (object)adaptor.GetNilNode();

            	string_literal104=(IToken)Match(input,42,FOLLOW_42_in_forstatement1447); 
            		string_literal104_tree = (object)adaptor.Create(string_literal104);
            		adaptor.AddChild(root_0, string_literal104_tree);

            	PushFollow(FOLLOW_range_in_forstatement1452);
            	r11 = range();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r11.Tree);
            	retval.ret.RANGE = ((r11 != null) ? r11.ret : null);
            	LEFTPARANTHESIS105=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_forstatement1455); 
            		LEFTPARANTHESIS105_tree = (object)adaptor.Create(LEFTPARANTHESIS105);
            		adaptor.AddChild(root_0, LEFTPARANTHESIS105_tree);

            	// spinach.g:249:66: (e11= expr1 )+
            	int cnt30 = 0;
            	do 
            	{
            	    int alt30 = 2;
            	    int LA30_0 = input.LA(1);

            	    if ( (LA30_0 == VARIABLE || LA30_0 == VARTYPE || LA30_0 == STRINGTYPE || LA30_0 == 28 || LA30_0 == 32 || (LA30_0 >= 34 && LA30_0 <= 36) || LA30_0 == 40 || (LA30_0 >= 42 && LA30_0 <= 43) || LA30_0 == 46 || LA30_0 == 48 || (LA30_0 >= 52 && LA30_0 <= 56)) )
            	    {
            	        alt30 = 1;
            	    }


            	    switch (alt30) 
            		{
            			case 1 :
            			    // spinach.g:249:67: e11= expr1
            			    {
            			    	PushFollow(FOLLOW_expr1_in_forstatement1460);
            			    	e11 = expr1();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, e11.Tree);
            			    	retval.ret.ADDCODE =((e11 != null) ? e11.ret : null);

            			    }
            			    break;

            			default:
            			    if ( cnt30 >= 1 ) goto loop30;
            		            EarlyExitException eee30 =
            		                new EarlyExitException(30, input);
            		            throw eee30;
            	    }
            	    cnt30++;
            	} while (true);

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

            	RIGHTPARANTHESIS106=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_forstatement1465); 
            		RIGHTPARANTHESIS106_tree = (object)adaptor.Create(RIGHTPARANTHESIS106);
            		adaptor.AddChild(root_0, RIGHTPARANTHESIS106_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;
    }
Пример #3
0
    // $ANTLR start "forstatement"
    // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:264:1: forstatement returns [ForStatementElement ret] : 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= expr2 )+ RIGHTPARANTHESIS ;
    public spinachParser.forstatement_return forstatement() // throws RecognitionException [1]
    {   
        spinachParser.forstatement_return retval = new spinachParser.forstatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal116 = null;
        IToken LEFTBRACE117 = null;
        IToken POINT118 = null;
        IToken string_literal119 = null;
        IToken RIGHTBRACE120 = null;
        IToken LEFTPARANTHESIS121 = null;
        IToken RIGHTPARANTHESIS122 = null;
        spinachParser.variable_return r11 = null;

        spinachParser.int_literal_return r12 = null;

        spinachParser.int_literal_return r13 = null;

        spinachParser.expr2_return e11 = null;


        object string_literal116_tree=null;
        object LEFTBRACE117_tree=null;
        object POINT118_tree=null;
        object string_literal119_tree=null;
        object RIGHTBRACE120_tree=null;
        object LEFTPARANTHESIS121_tree=null;
        object RIGHTPARANTHESIS122_tree=null;


           retval.ret = new ForStatementElement();

        try 
    	{
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:267:2: ( 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= expr2 )+ RIGHTPARANTHESIS )
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:267:3: 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= expr2 )+ RIGHTPARANTHESIS
            {
            	root_0 = (object)adaptor.GetNilNode();

            	string_literal116=(IToken)Match(input,42,FOLLOW_42_in_forstatement1557); 
            		string_literal116_tree = (object)adaptor.Create(string_literal116);
            		adaptor.AddChild(root_0, string_literal116_tree);

            	LEFTBRACE117=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_forstatement1559); 
            		LEFTBRACE117_tree = (object)adaptor.Create(LEFTBRACE117);
            		adaptor.AddChild(root_0, LEFTBRACE117_tree);

            	PushFollow(FOLLOW_variable_in_forstatement1565);
            	r11 = variable();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r11.Tree);
            	retval.ret.RANGEVARIABLE = ((r11 != null) ? r11.ret : null);
            	POINT118=(IToken)Match(input,POINT,FOLLOW_POINT_in_forstatement1568); 
            		POINT118_tree = (object)adaptor.Create(POINT118);
            		adaptor.AddChild(root_0, POINT118_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1574);
            	r12 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r12.Tree);
            	retval.ret.STARTINGRANGE = ((r12 != null) ? r12.ret : null);
            	string_literal119=(IToken)Match(input,38,FOLLOW_38_in_forstatement1577); 
            		string_literal119_tree = (object)adaptor.Create(string_literal119);
            		adaptor.AddChild(root_0, string_literal119_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1582);
            	r13 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r13.Tree);
            	retval.ret.ENDINGRANGE = ((r13 != null) ? r13.ret : null);
            	RIGHTBRACE120=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_forstatement1585); 
            		RIGHTBRACE120_tree = (object)adaptor.Create(RIGHTBRACE120);
            		adaptor.AddChild(root_0, RIGHTBRACE120_tree);

            	LEFTPARANTHESIS121=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_forstatement1587); 
            		LEFTPARANTHESIS121_tree = (object)adaptor.Create(LEFTPARANTHESIS121);
            		adaptor.AddChild(root_0, LEFTPARANTHESIS121_tree);

            	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:267:219: (e11= expr2 )+
            	int cnt36 = 0;
            	do 
            	{
            	    int alt36 = 2;
            	    int LA36_0 = input.LA(1);

            	    if ( (LA36_0 == VARIABLE || LA36_0 == 40 || LA36_0 == 42 || LA36_0 == 46) )
            	    {
            	        alt36 = 1;
            	    }


            	    switch (alt36) 
            		{
            			case 1 :
            			    // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:267:220: e11= expr2
            			    {
            			    	PushFollow(FOLLOW_expr2_in_forstatement1592);
            			    	e11 = expr2();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, e11.Tree);
            			    	retval.ret.ADDCODE =((e11 != null) ? e11.ret : null);

            			    }
            			    break;

            			default:
            			    if ( cnt36 >= 1 ) goto loop36;
            		            EarlyExitException eee36 =
            		                new EarlyExitException(36, input);
            		            throw eee36;
            	    }
            	    cnt36++;
            	} while (true);

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

            	RIGHTPARANTHESIS122=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_forstatement1597); 
            		RIGHTPARANTHESIS122_tree = (object)adaptor.Create(RIGHTPARANTHESIS122);
            		adaptor.AddChild(root_0, RIGHTPARANTHESIS122_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;
    }
Пример #4
0
    // throws RecognitionException [1]
    // $ANTLR start "forstatement"
    // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:182:1: forstatement returns [ForStatementElement ret] : 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS ;
    public spinachParser.forstatement_return forstatement()
    {
        spinachParser.forstatement_return retval = new spinachParser.forstatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal93 = null;
        IToken LEFTPARANTHESIS94 = null;
        IToken RIGHTPARANTHESIS95 = null;
        spinachParser.range_return r11 = null;

        spinachParser.expr1_return e11 = null;

        object string_literal93_tree=null;
        object LEFTPARANTHESIS94_tree=null;
        object RIGHTPARANTHESIS95_tree=null;

           retval.ret = new ForStatementElement();

        try
        {
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:185:2: ( 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS )
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:185:3: 'for' r11= range LEFTPARANTHESIS (e11= expr1 )+ RIGHTPARANTHESIS
            {
                root_0 = (object)adaptor.GetNilNode();

                string_literal93=(IToken)Match(input,38,FOLLOW_38_in_forstatement1014);
                    string_literal93_tree = (object)adaptor.Create(string_literal93);
                    adaptor.AddChild(root_0, string_literal93_tree);

                PushFollow(FOLLOW_range_in_forstatement1019);
                r11 = range();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, r11.Tree);
                retval.ret.RANGE = ((r11 != null) ? r11.ret : null);
                LEFTPARANTHESIS94=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_forstatement1022);
                    LEFTPARANTHESIS94_tree = (object)adaptor.Create(LEFTPARANTHESIS94);
                    adaptor.AddChild(root_0, LEFTPARANTHESIS94_tree);

                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:185:66: (e11= expr1 )+
                int cnt20 = 0;
                do
                {
                    int alt20 = 2;
                    int LA20_0 = input.LA(1);

                    if ( (LA20_0 == VARIABLE || LA20_0 == VARTYPE || LA20_0 == STRINGTYPE || LA20_0 == 23 || (LA20_0 >= 29 && LA20_0 <= 32) || LA20_0 == 36 || (LA20_0 >= 38 && LA20_0 <= 46)) )
                    {
                        alt20 = 1;
                    }

                    switch (alt20)
                    {
                        case 1 :
                            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:185:67: e11= expr1
                            {
                                PushFollow(FOLLOW_expr1_in_forstatement1027);
                                e11 = expr1();
                                state.followingStackPointer--;

                                adaptor.AddChild(root_0, e11.Tree);
                                retval.ret.ADDCODE =((e11 != null) ? e11.ret : null);

                            }
                            break;

                        default:
                            if ( cnt20 >= 1 ) goto loop20;
                                EarlyExitException eee20 =
                                    new EarlyExitException(20, input);
                                throw eee20;
                    }
                    cnt20++;
                } while (true);

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

                RIGHTPARANTHESIS95=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_forstatement1032);
                    RIGHTPARANTHESIS95_tree = (object)adaptor.Create(RIGHTPARANTHESIS95);
                    adaptor.AddChild(root_0, RIGHTPARANTHESIS95_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;
    }
Пример #5
0
    // $ANTLR start "forstatement"
    // spinach.g:270:1: forstatement returns [ForStatementElement ret] : 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr | comment )+ RIGHTPARANTHESIS ;
    public spinachParser.forstatement_return forstatement() // throws RecognitionException [1]
    {   
        spinachParser.forstatement_return retval = new spinachParser.forstatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal124 = null;
        IToken LEFTBRACE125 = null;
        IToken POINT126 = null;
        IToken string_literal127 = null;
        IToken RIGHTBRACE128 = null;
        IToken LEFTPARANTHESIS129 = null;
        IToken RIGHTPARANTHESIS131 = null;
        spinachParser.variable_return r11 = null;

        spinachParser.int_literal_return r12 = null;

        spinachParser.int_literal_return r13 = null;

        spinachParser.forexpr_return e11 = null;

        spinachParser.comment_return comment130 = null;


        object string_literal124_tree=null;
        object LEFTBRACE125_tree=null;
        object POINT126_tree=null;
        object string_literal127_tree=null;
        object RIGHTBRACE128_tree=null;
        object LEFTPARANTHESIS129_tree=null;
        object RIGHTPARANTHESIS131_tree=null;


           retval.ret = new ForStatementElement();

        try 
    	{
            // spinach.g:273:2: ( 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr | comment )+ RIGHTPARANTHESIS )
            // spinach.g:273:3: 'for' LEFTBRACE r11= variable POINT r12= int_literal 'to' r13= int_literal RIGHTBRACE LEFTPARANTHESIS (e11= forexpr | comment )+ RIGHTPARANTHESIS
            {
            	root_0 = (object)adaptor.GetNilNode();

            	string_literal124=(IToken)Match(input,42,FOLLOW_42_in_forstatement1574); 
            		string_literal124_tree = (object)adaptor.Create(string_literal124);
            		adaptor.AddChild(root_0, string_literal124_tree);

            	LEFTBRACE125=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_forstatement1576); 
            		LEFTBRACE125_tree = (object)adaptor.Create(LEFTBRACE125);
            		adaptor.AddChild(root_0, LEFTBRACE125_tree);

            	PushFollow(FOLLOW_variable_in_forstatement1582);
            	r11 = variable();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r11.Tree);
            	retval.ret.RANGEVARIABLE = ((r11 != null) ? r11.ret : null);
            	POINT126=(IToken)Match(input,POINT,FOLLOW_POINT_in_forstatement1585); 
            		POINT126_tree = (object)adaptor.Create(POINT126);
            		adaptor.AddChild(root_0, POINT126_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1591);
            	r12 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r12.Tree);
            	retval.ret.STARTINGRANGE = ((r12 != null) ? r12.ret : null);
            	string_literal127=(IToken)Match(input,38,FOLLOW_38_in_forstatement1594); 
            		string_literal127_tree = (object)adaptor.Create(string_literal127);
            		adaptor.AddChild(root_0, string_literal127_tree);

            	PushFollow(FOLLOW_int_literal_in_forstatement1599);
            	r13 = int_literal();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, r13.Tree);
            	retval.ret.ENDINGRANGE = ((r13 != null) ? r13.ret : null);
            	RIGHTBRACE128=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_forstatement1602); 
            		RIGHTBRACE128_tree = (object)adaptor.Create(RIGHTBRACE128);
            		adaptor.AddChild(root_0, RIGHTBRACE128_tree);

            	LEFTPARANTHESIS129=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_forstatement1604); 
            		LEFTPARANTHESIS129_tree = (object)adaptor.Create(LEFTPARANTHESIS129);
            		adaptor.AddChild(root_0, LEFTPARANTHESIS129_tree);

            	// spinach.g:273:219: (e11= forexpr | comment )+
            	int cnt36 = 0;
            	do 
            	{
            	    int alt36 = 3;
            	    int LA36_0 = input.LA(1);

            	    if ( (LA36_0 == VARIABLE || LA36_0 == VARTYPE || LA36_0 == STRINGTYPE || LA36_0 == 28 || LA36_0 == 32 || LA36_0 == 35 || LA36_0 == 40 || LA36_0 == 42 || LA36_0 == 47 || (LA36_0 >= 51 && LA36_0 <= 55)) )
            	    {
            	        alt36 = 1;
            	    }
            	    else if ( (LA36_0 == 56) )
            	    {
            	        alt36 = 2;
            	    }


            	    switch (alt36) 
            		{
            			case 1 :
            			    // spinach.g:273:220: e11= forexpr
            			    {
            			    	PushFollow(FOLLOW_forexpr_in_forstatement1609);
            			    	e11 = forexpr();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, e11.Tree);
            			    	retval.ret.ADDCODE =((e11 != null) ? e11.ret : null);

            			    }
            			    break;
            			case 2 :
            			    // spinach.g:273:263: comment
            			    {
            			    	PushFollow(FOLLOW_comment_in_forstatement1612);
            			    	comment130 = comment();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, comment130.Tree);

            			    }
            			    break;

            			default:
            			    if ( cnt36 >= 1 ) goto loop36;
            		            EarlyExitException eee36 =
            		                new EarlyExitException(36, input);
            		            throw eee36;
            	    }
            	    cnt36++;
            	} while (true);

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

            	RIGHTPARANTHESIS131=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_forstatement1616); 
            		RIGHTPARANTHESIS131_tree = (object)adaptor.Create(RIGHTPARANTHESIS131);
            		adaptor.AddChild(root_0, RIGHTPARANTHESIS131_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;
    }