Inheritance: Antlr.Runtime.ParserRuleReturnScope
Beispiel #1
0
    // $ANTLR start "structdec"
    // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:194:1: structdec returns [StructDeclaration ret] : ( 'struct' variable ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' ) ) END_OF_STATEMENT ;
    public spinachParser.structdec_return structdec() // throws RecognitionException [1]
    {   
        spinachParser.structdec_return retval = new spinachParser.structdec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal77 = null;
        IToken char_literal79 = null;
        IToken char_literal80 = null;
        IToken char_literal81 = null;
        IToken char_literal82 = null;
        IToken END_OF_STATEMENT83 = null;
        spinachParser.scalarvardec_return el1 = null;

        spinachParser.variable_return variable78 = null;


        object string_literal77_tree=null;
        object char_literal79_tree=null;
        object char_literal80_tree=null;
        object char_literal81_tree=null;
        object char_literal82_tree=null;
        object END_OF_STATEMENT83_tree=null;


        retval.ret = new StructDeclaration();

        try 
    	{
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:198:1: ( ( 'struct' variable ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' ) ) END_OF_STATEMENT )
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:198:3: ( 'struct' variable ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' ) ) END_OF_STATEMENT
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:198:3: ( 'struct' variable ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' ) )
            	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:198:4: 'struct' variable ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' )
            	{
            		string_literal77=(IToken)Match(input,34,FOLLOW_34_in_structdec1135); 
            			string_literal77_tree = (object)adaptor.Create(string_literal77);
            			adaptor.AddChild(root_0, string_literal77_tree);

            		PushFollow(FOLLOW_variable_in_structdec1137);
            		variable78 = variable();
            		state.followingStackPointer--;

            		adaptor.AddChild(root_0, variable78.Tree);
            		 retval.ret.setName(((variable78 != null) ? variable78.ret : null));
            		// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:199:1: ( ( '{' '}' ) | '{' (el1= scalarvardec )+ '}' )
            		int alt26 = 2;
            		int LA26_0 = input.LA(1);

            		if ( (LA26_0 == LEFTPARANTHESIS) )
            		{
            		    int LA26_1 = input.LA(2);

            		    if ( (LA26_1 == RIGHTPARANTHESIS) )
            		    {
            		        alt26 = 1;
            		    }
            		    else if ( (LA26_1 == VARTYPE || LA26_1 == STRINGTYPE) )
            		    {
            		        alt26 = 2;
            		    }
            		    else 
            		    {
            		        NoViableAltException nvae_d26s1 =
            		            new NoViableAltException("", 26, 1, input);

            		        throw nvae_d26s1;
            		    }
            		}
            		else 
            		{
            		    NoViableAltException nvae_d26s0 =
            		        new NoViableAltException("", 26, 0, input);

            		    throw nvae_d26s0;
            		}
            		switch (alt26) 
            		{
            		    case 1 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:199:2: ( '{' '}' )
            		        {
            		        	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:199:2: ( '{' '}' )
            		        	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:199:3: '{' '}'
            		        	{
            		        		char_literal79=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec1143); 
            		        			char_literal79_tree = (object)adaptor.Create(char_literal79);
            		        			adaptor.AddChild(root_0, char_literal79_tree);

            		        		char_literal80=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec1144); 
            		        			char_literal80_tree = (object)adaptor.Create(char_literal80);
            		        			adaptor.AddChild(root_0, char_literal80_tree);


            		        	}


            		        }
            		        break;
            		    case 2 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:200:1: '{' (el1= scalarvardec )+ '}'
            		        {
            		        	char_literal81=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec1148); 
            		        		char_literal81_tree = (object)adaptor.Create(char_literal81);
            		        		adaptor.AddChild(root_0, char_literal81_tree);

            		        	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:200:5: (el1= scalarvardec )+
            		        	int cnt25 = 0;
            		        	do 
            		        	{
            		        	    int alt25 = 2;
            		        	    int LA25_0 = input.LA(1);

            		        	    if ( (LA25_0 == VARTYPE || LA25_0 == STRINGTYPE) )
            		        	    {
            		        	        alt25 = 1;
            		        	    }


            		        	    switch (alt25) 
            		        		{
            		        			case 1 :
            		        			    // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:200:6: el1= scalarvardec
            		        			    {
            		        			    	PushFollow(FOLLOW_scalarvardec_in_structdec1153);
            		        			    	el1 = scalarvardec();
            		        			    	state.followingStackPointer--;

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

            		        			    }
            		        			    break;

            		        			default:
            		        			    if ( cnt25 >= 1 ) goto loop25;
            		        		            EarlyExitException eee25 =
            		        		                new EarlyExitException(25, input);
            		        		            throw eee25;
            		        	    }
            		        	    cnt25++;
            		        	} while (true);

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

            		        	char_literal82=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec1158); 
            		        		char_literal82_tree = (object)adaptor.Create(char_literal82);
            		        		adaptor.AddChild(root_0, char_literal82_tree);


            		        }
            		        break;

            		}

            		retval.ret.setVar();

            	}

            	END_OF_STATEMENT83=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_structdec1163); 
            		END_OF_STATEMENT83_tree = (object)adaptor.Create(END_OF_STATEMENT83);
            		adaptor.AddChild(root_0, END_OF_STATEMENT83_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;
    }
Beispiel #2
0
    // $ANTLR start "structdec"
    // spinach.g:172:1: structdec returns [StructDeclaration ret] : ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT ;
    public spinachParser.structdec_return structdec() // throws RecognitionException [1]
    {   
        spinachParser.structdec_return retval = new spinachParser.structdec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal63 = null;
        IToken char_literal65 = null;
        IToken char_literal66 = null;
        IToken END_OF_STATEMENT67 = null;
        spinachParser.scalarvardec_return el1 = null;

        spinachParser.variable_return variable64 = null;


        object string_literal63_tree=null;
        object char_literal65_tree=null;
        object char_literal66_tree=null;
        object END_OF_STATEMENT67_tree=null;


        retval.ret = new StructDeclaration();

        try 
    	{
            // spinach.g:176:1: ( ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT )
            // spinach.g:176:3: ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// spinach.g:176:3: ( 'struct' variable '{' (el1= scalarvardec )+ '}' )
            	// spinach.g:176:4: 'struct' variable '{' (el1= scalarvardec )+ '}'
            	{
            		string_literal63=(IToken)Match(input,34,FOLLOW_34_in_structdec1051); 
            			string_literal63_tree = (object)adaptor.Create(string_literal63);
            			adaptor.AddChild(root_0, string_literal63_tree);

            		PushFollow(FOLLOW_variable_in_structdec1053);
            		variable64 = variable();
            		state.followingStackPointer--;

            		adaptor.AddChild(root_0, variable64.Tree);
            		 retval.ret.setName(((variable64 != null) ? variable64.ret : null));
            		char_literal65=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec1057); 
            			char_literal65_tree = (object)adaptor.Create(char_literal65);
            			adaptor.AddChild(root_0, char_literal65_tree);

            		// spinach.g:177:5: (el1= scalarvardec )+
            		int cnt20 = 0;
            		do 
            		{
            		    int alt20 = 2;
            		    int LA20_0 = input.LA(1);

            		    if ( (LA20_0 == VARTYPE || LA20_0 == STRINGTYPE) )
            		    {
            		        alt20 = 1;
            		    }


            		    switch (alt20) 
            			{
            				case 1 :
            				    // spinach.g:177:6: el1= scalarvardec
            				    {
            				    	PushFollow(FOLLOW_scalarvardec_in_structdec1062);
            				    	el1 = scalarvardec();
            				    	state.followingStackPointer--;

            				    	adaptor.AddChild(root_0, el1.Tree);
            				    	 retval.ret.setVarType(((el1 != null) ? el1.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

            		char_literal66=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec1068); 
            			char_literal66_tree = (object)adaptor.Create(char_literal66);
            			adaptor.AddChild(root_0, char_literal66_tree);


            	}

            	END_OF_STATEMENT67=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_structdec1070); 
            		END_OF_STATEMENT67_tree = (object)adaptor.Create(END_OF_STATEMENT67);
            		adaptor.AddChild(root_0, END_OF_STATEMENT67_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;
    }
Beispiel #3
0
    // $ANTLR start "structdec"
    // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:186:1: structdec returns [StructDeclaration ret] : ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT ;
    public spinachParser.structdec_return structdec() // throws RecognitionException [1]
    {   
        spinachParser.structdec_return retval = new spinachParser.structdec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal71 = null;
        IToken char_literal73 = null;
        IToken char_literal74 = null;
        IToken END_OF_STATEMENT75 = null;
        spinachParser.scalarvardec_return el1 = null;

        spinachParser.variable_return variable72 = null;


        object string_literal71_tree=null;
        object char_literal73_tree=null;
        object char_literal74_tree=null;
        object END_OF_STATEMENT75_tree=null;


        retval.ret = new StructDeclaration();

        try 
    	{
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:190:1: ( ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT )
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:190:3: ( 'struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:190:3: ( 'struct' variable '{' (el1= scalarvardec )+ '}' )
            	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:190:4: 'struct' variable '{' (el1= scalarvardec )+ '}'
            	{
            		string_literal71=(IToken)Match(input,34,FOLLOW_34_in_structdec1083); 
            			string_literal71_tree = (object)adaptor.Create(string_literal71);
            			adaptor.AddChild(root_0, string_literal71_tree);

            		PushFollow(FOLLOW_variable_in_structdec1085);
            		variable72 = variable();
            		state.followingStackPointer--;

            		adaptor.AddChild(root_0, variable72.Tree);
            		 retval.ret.setName(((variable72 != null) ? variable72.ret : null));
            		char_literal73=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec1089); 
            			char_literal73_tree = (object)adaptor.Create(char_literal73);
            			adaptor.AddChild(root_0, char_literal73_tree);

            		// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:191:5: (el1= scalarvardec )+
            		int cnt24 = 0;
            		do 
            		{
            		    int alt24 = 2;
            		    int LA24_0 = input.LA(1);

            		    if ( (LA24_0 == VARTYPE || LA24_0 == STRINGTYPE) )
            		    {
            		        alt24 = 1;
            		    }


            		    switch (alt24) 
            			{
            				case 1 :
            				    // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:191:6: el1= scalarvardec
            				    {
            				    	PushFollow(FOLLOW_scalarvardec_in_structdec1094);
            				    	el1 = scalarvardec();
            				    	state.followingStackPointer--;

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

            				    }
            				    break;

            				default:
            				    if ( cnt24 >= 1 ) goto loop24;
            			            EarlyExitException eee24 =
            			                new EarlyExitException(24, input);
            			            throw eee24;
            		    }
            		    cnt24++;
            		} while (true);

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

            		char_literal74=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec1100); 
            			char_literal74_tree = (object)adaptor.Create(char_literal74);
            			adaptor.AddChild(root_0, char_literal74_tree);


            	}

            	END_OF_STATEMENT75=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_structdec1102); 
            		END_OF_STATEMENT75_tree = (object)adaptor.Create(END_OF_STATEMENT75);
            		adaptor.AddChild(root_0, END_OF_STATEMENT75_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;
    }
Beispiel #4
0
    // throws RecognitionException [1]
    // $ANTLR start "structdec"
    // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:115:1: structdec returns [StructDeclaration ret] : ( 'Struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT ;
    public spinachParser.structdec_return structdec()
    {
        spinachParser.structdec_return retval = new spinachParser.structdec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal58 = null;
        IToken char_literal60 = null;
        IToken char_literal61 = null;
        IToken END_OF_STATEMENT62 = null;
        spinachParser.scalarvardec_return el1 = null;

        spinachParser.variable_return variable59 = null;

        object string_literal58_tree=null;
        object char_literal60_tree=null;
        object char_literal61_tree=null;
        object END_OF_STATEMENT62_tree=null;

        retval.ret = new StructDeclaration();

        try
        {
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:119:1: ( ( 'Struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT )
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:119:3: ( 'Struct' variable '{' (el1= scalarvardec )+ '}' ) END_OF_STATEMENT
            {
                root_0 = (object)adaptor.GetNilNode();

                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:119:3: ( 'Struct' variable '{' (el1= scalarvardec )+ '}' )
                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:119:4: 'Struct' variable '{' (el1= scalarvardec )+ '}'
                {
                    string_literal58=(IToken)Match(input,30,FOLLOW_30_in_structdec657);
                        string_literal58_tree = (object)adaptor.Create(string_literal58);
                        adaptor.AddChild(root_0, string_literal58_tree);

                    PushFollow(FOLLOW_variable_in_structdec659);
                    variable59 = variable();
                    state.followingStackPointer--;

                    adaptor.AddChild(root_0, variable59.Tree);
                     retval.ret.setName(((variable59 != null) ? variable59.ret : null));
                    char_literal60=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec663);
                        char_literal60_tree = (object)adaptor.Create(char_literal60);
                        adaptor.AddChild(root_0, char_literal60_tree);

                    // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:120:5: (el1= scalarvardec )+
                    int cnt11 = 0;
                    do
                    {
                        int alt11 = 2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0 == VARTYPE || LA11_0 == STRINGTYPE) )
                        {
                            alt11 = 1;
                        }

                        switch (alt11)
                        {
                            case 1 :
                                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:120:6: el1= scalarvardec
                                {
                                    PushFollow(FOLLOW_scalarvardec_in_structdec668);
                                    el1 = scalarvardec();
                                    state.followingStackPointer--;

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

                                }
                                break;

                            default:
                                if ( cnt11 >= 1 ) goto loop11;
                                    EarlyExitException eee11 =
                                        new EarlyExitException(11, input);
                                    throw eee11;
                        }
                        cnt11++;
                    } while (true);

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

                    char_literal61=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec674);
                        char_literal61_tree = (object)adaptor.Create(char_literal61);
                        adaptor.AddChild(root_0, char_literal61_tree);

                }

                END_OF_STATEMENT62=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_structdec676);
                    END_OF_STATEMENT62_tree = (object)adaptor.Create(END_OF_STATEMENT62);
                    adaptor.AddChild(root_0, END_OF_STATEMENT62_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;
    }
Beispiel #5
0
    // $ANTLR start "structdec"
    // spinach.g:192:1: structdec returns [StructDeclaration ret] : ( 'struct' variable ( '{' ( (el1= scalarvardec | comment )+ )? '}' ) ) END_OF_STATEMENT ;
    public spinachParser.structdec_return structdec() // throws RecognitionException [1]
    {   
        spinachParser.structdec_return retval = new spinachParser.structdec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal79 = null;
        IToken char_literal81 = null;
        IToken char_literal83 = null;
        IToken END_OF_STATEMENT84 = null;
        spinachParser.scalarvardec_return el1 = null;

        spinachParser.variable_return variable80 = null;

        spinachParser.comment_return comment82 = null;


        object string_literal79_tree=null;
        object char_literal81_tree=null;
        object char_literal83_tree=null;
        object END_OF_STATEMENT84_tree=null;


        retval.ret = new StructDeclaration();

        try 
    	{
            // spinach.g:196:1: ( ( 'struct' variable ( '{' ( (el1= scalarvardec | comment )+ )? '}' ) ) END_OF_STATEMENT )
            // spinach.g:196:3: ( 'struct' variable ( '{' ( (el1= scalarvardec | comment )+ )? '}' ) ) END_OF_STATEMENT
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// spinach.g:196:3: ( 'struct' variable ( '{' ( (el1= scalarvardec | comment )+ )? '}' ) )
            	// spinach.g:196:4: 'struct' variable ( '{' ( (el1= scalarvardec | comment )+ )? '}' )
            	{
            		string_literal79=(IToken)Match(input,34,FOLLOW_34_in_structdec1100); 
            			string_literal79_tree = (object)adaptor.Create(string_literal79);
            			adaptor.AddChild(root_0, string_literal79_tree);

            		PushFollow(FOLLOW_variable_in_structdec1102);
            		variable80 = variable();
            		state.followingStackPointer--;

            		adaptor.AddChild(root_0, variable80.Tree);
            		 retval.ret.setName(((variable80 != null) ? variable80.ret : null));
            		// spinach.g:197:1: ( '{' ( (el1= scalarvardec | comment )+ )? '}' )
            		// spinach.g:197:2: '{' ( (el1= scalarvardec | comment )+ )? '}'
            		{
            			char_literal81=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_structdec1107); 
            				char_literal81_tree = (object)adaptor.Create(char_literal81);
            				adaptor.AddChild(root_0, char_literal81_tree);

            			// spinach.g:197:5: ( (el1= scalarvardec | comment )+ )?
            			int alt25 = 2;
            			int LA25_0 = input.LA(1);

            			if ( (LA25_0 == VARTYPE || LA25_0 == STRINGTYPE || LA25_0 == 56) )
            			{
            			    alt25 = 1;
            			}
            			switch (alt25) 
            			{
            			    case 1 :
            			        // spinach.g:197:6: (el1= scalarvardec | comment )+
            			        {
            			        	// spinach.g:197:6: (el1= scalarvardec | comment )+
            			        	int cnt24 = 0;
            			        	do 
            			        	{
            			        	    int alt24 = 3;
            			        	    int LA24_0 = input.LA(1);

            			        	    if ( (LA24_0 == VARTYPE || LA24_0 == STRINGTYPE) )
            			        	    {
            			        	        alt24 = 1;
            			        	    }
            			        	    else if ( (LA24_0 == 56) )
            			        	    {
            			        	        alt24 = 2;
            			        	    }


            			        	    switch (alt24) 
            			        		{
            			        			case 1 :
            			        			    // spinach.g:197:7: el1= scalarvardec
            			        			    {
            			        			    	PushFollow(FOLLOW_scalarvardec_in_structdec1112);
            			        			    	el1 = scalarvardec();
            			        			    	state.followingStackPointer--;

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

            			        			    }
            			        			    break;
            			        			case 2 :
            			        			    // spinach.g:197:61: comment
            			        			    {
            			        			    	PushFollow(FOLLOW_comment_in_structdec1117);
            			        			    	comment82 = comment();
            			        			    	state.followingStackPointer--;

            			        			    	adaptor.AddChild(root_0, comment82.Tree);

            			        			    }
            			        			    break;

            			        			default:
            			        			    if ( cnt24 >= 1 ) goto loop24;
            			        		            EarlyExitException eee24 =
            			        		                new EarlyExitException(24, input);
            			        		            throw eee24;
            			        	    }
            			        	    cnt24++;
            			        	} while (true);

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


            			        }
            			        break;

            			}

            			char_literal83=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_structdec1123); 
            				char_literal83_tree = (object)adaptor.Create(char_literal83);
            				adaptor.AddChild(root_0, char_literal83_tree);


            		}

            		retval.ret.setVar();

            	}

            	END_OF_STATEMENT84=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_structdec1128); 
            		END_OF_STATEMENT84_tree = (object)adaptor.Create(END_OF_STATEMENT84);
            		adaptor.AddChild(root_0, END_OF_STATEMENT84_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;
    }