Inheritance: Antlr.Runtime.ParserRuleReturnScope
Exemplo n.º 1
0
    // $ANTLR start "assignment"
    // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:139:1: assignment returns [AssignmentOperationElement ret] : ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) ;
    public spinachParser.assignment_return assignment() // throws RecognitionException [1]
    {   
        spinachParser.assignment_return retval = new spinachParser.assignment_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ASSIGNMENT64 = null;
        IToken END_OF_STATEMENT69 = null;
        spinachParser.vectorelem_return e12 = null;

        spinachParser.matrixelem_return e11 = null;

        spinachParser.variable_return variable62 = null;

        spinachParser.structassign_return structassign63 = null;

        spinachParser.subtractive_exp_return subtractive_exp65 = null;

        spinachParser.dotproduct_return dotproduct66 = null;

        spinachParser.matrixtranspose_return matrixtranspose67 = null;

        spinachParser.string_literal_return string_literal68 = null;

        spinachParser.functioncall_return functioncall70 = null;


        object ASSIGNMENT64_tree=null;
        object END_OF_STATEMENT69_tree=null;


          retval.ret = new AssignmentOperationElement();

        try 
    	{
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:3: ( ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) )
            // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:6: ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            	{
            		// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:6: ( variable | structassign | e12= vectorelem | e11= matrixelem )
            		int alt18 = 4;
            		alt18 = dfa18.Predict(input);
            		switch (alt18) 
            		{
            		    case 1 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:143:7: variable
            		        {
            		        	PushFollow(FOLLOW_variable_in_assignment803);
            		        	variable62 = variable();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 2 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:144:7: structassign
            		        {
            		        	PushFollow(FOLLOW_structassign_in_assignment813);
            		        	structassign63 = structassign();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 3 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:145:6: e12= vectorelem
            		        {
            		        	PushFollow(FOLLOW_vectorelem_in_assignment825);
            		        	e12 = vectorelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 4 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:146:7: e11= matrixelem
            		        {
            		        	PushFollow(FOLLOW_matrixelem_in_assignment838);
            		        	e11 = matrixelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;

            		}

            		ASSIGNMENT64=(IToken)Match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment846); 
            			ASSIGNMENT64_tree = (object)adaptor.Create(ASSIGNMENT64);
            			adaptor.AddChild(root_0, ASSIGNMENT64_tree);

            		// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:148:5: ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            		int alt20 = 2;
            		int LA20_0 = input.LA(1);

            		if ( ((LA20_0 >= INT_LITERAL && LA20_0 <= DOUBLE_LITERAL) || LA20_0 == LEFTBRACE || LA20_0 == 27 || LA20_0 == 45) )
            		{
            		    alt20 = 1;
            		}
            		else if ( (LA20_0 == VARIABLE) )
            		{
            		    int LA20_2 = input.LA(2);

            		    if ( (LA20_2 == LEFTBRACE) )
            		    {
            		        alt20 = 2;
            		    }
            		    else if ( (LA20_2 == END_OF_STATEMENT || (LA20_2 >= DOT && LA20_2 <= MULTIPLY) || LA20_2 == 29 || LA20_2 == 33 || LA20_2 == 44) )
            		    {
            		        alt20 = 1;
            		    }
            		    else 
            		    {
            		        NoViableAltException nvae_d20s2 =
            		            new NoViableAltException("", 20, 2, input);

            		        throw nvae_d20s2;
            		    }
            		}
            		else 
            		{
            		    NoViableAltException nvae_d20s0 =
            		        new NoViableAltException("", 20, 0, input);

            		    throw nvae_d20s0;
            		}
            		switch (alt20) 
            		{
            		    case 1 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:148:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT
            		        {
            		        	// C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:148:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal )
            		        	int alt19 = 4;
            		        	switch ( input.LA(1) ) 
            		        	{
            		        	case INT_LITERAL:
            		        	case DOUBLE_LITERAL:
            		        	case LEFTBRACE:
            		        		{
            		        	    alt19 = 1;
            		        	    }
            		        	    break;
            		        	case VARIABLE:
            		        		{
            		        	    int LA19_2 = input.LA(2);

            		        	    if ( (LA19_2 == END_OF_STATEMENT || (LA19_2 >= DOT && LA19_2 <= MULTIPLY) || LA19_2 == 29 || LA19_2 == 33) )
            		        	    {
            		        	        alt19 = 1;
            		        	    }
            		        	    else if ( (LA19_2 == 44) )
            		        	    {
            		        	        alt19 = 2;
            		        	    }
            		        	    else 
            		        	    {
            		        	        NoViableAltException nvae_d19s2 =
            		        	            new NoViableAltException("", 19, 2, input);

            		        	        throw nvae_d19s2;
            		        	    }
            		        	    }
            		        	    break;
            		        	case 45:
            		        		{
            		        	    alt19 = 3;
            		        	    }
            		        	    break;
            		        	case 27:
            		        		{
            		        	    alt19 = 4;
            		        	    }
            		        	    break;
            		        		default:
            		        		    NoViableAltException nvae_d19s0 =
            		        		        new NoViableAltException("", 19, 0, input);

            		        		    throw nvae_d19s0;
            		        	}

            		        	switch (alt19) 
            		        	{
            		        	    case 1 :
            		        	        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:148:8: subtractive_exp
            		        	        {
            		        	        	PushFollow(FOLLOW_subtractive_exp_in_assignment856);
            		        	        	subtractive_exp65 = subtractive_exp();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 2 :
            		        	        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:148:67: dotproduct
            		        	        {
            		        	        	PushFollow(FOLLOW_dotproduct_in_assignment860);
            		        	        	dotproduct66 = dotproduct();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 3 :
            		        	        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:149:7: matrixtranspose
            		        	        {
            		        	        	PushFollow(FOLLOW_matrixtranspose_in_assignment869);
            		        	        	matrixtranspose67 = matrixtranspose();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 4 :
            		        	        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:149:66: string_literal
            		        	        {
            		        	        	PushFollow(FOLLOW_string_literal_in_assignment873);
            		        	        	string_literal68 = string_literal();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;

            		        	}

            		        	END_OF_STATEMENT69=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_assignment881); 
            		        		END_OF_STATEMENT69_tree = (object)adaptor.Create(END_OF_STATEMENT69);
            		        		adaptor.AddChild(root_0, END_OF_STATEMENT69_tree);


            		        }
            		        break;
            		    case 2 :
            		        // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:151:7: functioncall
            		        {
            		        	PushFollow(FOLLOW_functioncall_in_assignment889);
            		        	functioncall70 = functioncall();
            		        	state.followingStackPointer--;

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

            		        }
            		        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;
    }
Exemplo n.º 2
0
    // $ANTLR start "assignment"
    // spinach.g:117:1: assignment returns [AssignmentOperationElement ret] : ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) ) END_OF_STATEMENT ;
    public spinachParser.assignment_return assignment() // throws RecognitionException [1]
    {   
        spinachParser.assignment_return retval = new spinachParser.assignment_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ASSIGNMENT51 = null;
        IToken END_OF_STATEMENT56 = null;
        spinachParser.vectorelem_return e12 = null;

        spinachParser.matrixelem_return e11 = null;

        spinachParser.variable_return variable49 = null;

        spinachParser.structassign_return structassign50 = null;

        spinachParser.subtractive_exp_return subtractive_exp52 = null;

        spinachParser.dotproduct_return dotproduct53 = null;

        spinachParser.matrixtranspose_return matrixtranspose54 = null;

        spinachParser.string_literal_return string_literal55 = null;


        object ASSIGNMENT51_tree=null;
        object END_OF_STATEMENT56_tree=null;


          retval.ret = new AssignmentOperationElement();

        try 
    	{
            // spinach.g:121:3: ( ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) ) END_OF_STATEMENT )
            // spinach.g:121:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) ) END_OF_STATEMENT
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// spinach.g:121:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) )
            	// spinach.g:121:6: ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( subtractive_exp | dotproduct | matrixtranspose | string_literal )
            	{
            		// spinach.g:121:6: ( variable | structassign | e12= vectorelem | e11= matrixelem )
            		int alt13 = 4;
            		int LA13_0 = input.LA(1);

            		if ( (LA13_0 == VARIABLE) )
            		{
            		    switch ( input.LA(2) ) 
            		    {
            		    case 29:
            		    	{
            		        int LA13_2 = input.LA(3);

            		        if ( (LA13_2 == INT_LITERAL) )
            		        {
            		            int LA13_5 = input.LA(4);

            		            if ( (LA13_5 == 30) )
            		            {
            		                int LA13_6 = input.LA(5);

            		                if ( (LA13_6 == 29) )
            		                {
            		                    alt13 = 4;
            		                }
            		                else if ( (LA13_6 == ASSIGNMENT) )
            		                {
            		                    alt13 = 3;
            		                }
            		                else 
            		                {
            		                    NoViableAltException nvae_d13s6 =
            		                        new NoViableAltException("", 13, 6, input);

            		                    throw nvae_d13s6;
            		                }
            		            }
            		            else 
            		            {
            		                NoViableAltException nvae_d13s5 =
            		                    new NoViableAltException("", 13, 5, input);

            		                throw nvae_d13s5;
            		            }
            		        }
            		        else 
            		        {
            		            NoViableAltException nvae_d13s2 =
            		                new NoViableAltException("", 13, 2, input);

            		            throw nvae_d13s2;
            		        }
            		        }
            		        break;
            		    case DOT:
            		    	{
            		        alt13 = 2;
            		        }
            		        break;
            		    case ASSIGNMENT:
            		    	{
            		        alt13 = 1;
            		        }
            		        break;
            		    	default:
            		    	    NoViableAltException nvae_d13s1 =
            		    	        new NoViableAltException("", 13, 1, input);

            		    	    throw nvae_d13s1;
            		    }

            		}
            		else 
            		{
            		    NoViableAltException nvae_d13s0 =
            		        new NoViableAltException("", 13, 0, input);

            		    throw nvae_d13s0;
            		}
            		switch (alt13) 
            		{
            		    case 1 :
            		        // spinach.g:121:7: variable
            		        {
            		        	PushFollow(FOLLOW_variable_in_assignment698);
            		        	variable49 = variable();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 2 :
            		        // spinach.g:122:7: structassign
            		        {
            		        	PushFollow(FOLLOW_structassign_in_assignment708);
            		        	structassign50 = structassign();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 3 :
            		        // spinach.g:123:6: e12= vectorelem
            		        {
            		        	PushFollow(FOLLOW_vectorelem_in_assignment720);
            		        	e12 = vectorelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 4 :
            		        // spinach.g:124:7: e11= matrixelem
            		        {
            		        	PushFollow(FOLLOW_matrixelem_in_assignment733);
            		        	e11 = matrixelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;

            		}

            		ASSIGNMENT51=(IToken)Match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment741); 
            			ASSIGNMENT51_tree = (object)adaptor.Create(ASSIGNMENT51);
            			adaptor.AddChild(root_0, ASSIGNMENT51_tree);

            		// spinach.g:126:5: ( subtractive_exp | dotproduct | matrixtranspose | string_literal )
            		int alt14 = 4;
            		switch ( input.LA(1) ) 
            		{
            		case VARIABLE:
            			{
            		    int LA14_1 = input.LA(2);

            		    if ( (LA14_1 == 44) )
            		    {
            		        alt14 = 2;
            		    }
            		    else if ( (LA14_1 == END_OF_STATEMENT || (LA14_1 >= PLUS && LA14_1 <= MULTIPLY) || LA14_1 == 29 || LA14_1 == 33) )
            		    {
            		        alt14 = 1;
            		    }
            		    else 
            		    {
            		        NoViableAltException nvae_d14s1 =
            		            new NoViableAltException("", 14, 1, input);

            		        throw nvae_d14s1;
            		    }
            		    }
            		    break;
            		case INT_LITERAL:
            		case DOUBLE_LITERAL:
            		case LEFTBRACE:
            			{
            		    alt14 = 1;
            		    }
            		    break;
            		case 45:
            			{
            		    alt14 = 3;
            		    }
            		    break;
            		case 27:
            			{
            		    alt14 = 4;
            		    }
            		    break;
            			default:
            			    NoViableAltException nvae_d14s0 =
            			        new NoViableAltException("", 14, 0, input);

            			    throw nvae_d14s0;
            		}

            		switch (alt14) 
            		{
            		    case 1 :
            		        // spinach.g:126:7: subtractive_exp
            		        {
            		        	PushFollow(FOLLOW_subtractive_exp_in_assignment750);
            		        	subtractive_exp52 = subtractive_exp();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 2 :
            		        // spinach.g:126:66: dotproduct
            		        {
            		        	PushFollow(FOLLOW_dotproduct_in_assignment754);
            		        	dotproduct53 = dotproduct();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 3 :
            		        // spinach.g:127:7: matrixtranspose
            		        {
            		        	PushFollow(FOLLOW_matrixtranspose_in_assignment763);
            		        	matrixtranspose54 = matrixtranspose();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 4 :
            		        // spinach.g:127:66: string_literal
            		        {
            		        	PushFollow(FOLLOW_string_literal_in_assignment767);
            		        	string_literal55 = string_literal();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;

            		}


            	}

            	END_OF_STATEMENT56=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_assignment782); 
            		END_OF_STATEMENT56_tree = (object)adaptor.Create(END_OF_STATEMENT56);
            		adaptor.AddChild(root_0, END_OF_STATEMENT56_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;
    }
Exemplo n.º 3
0
    // $ANTLR start "assignment"
    // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:127:1: assignment returns [AssignmentOperationElement ret] : ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) ;
    public spinachParser.assignment_return assignment() // throws RecognitionException [1]
    {   
        spinachParser.assignment_return retval = new spinachParser.assignment_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ASSIGNMENT58 = null;
        IToken END_OF_STATEMENT63 = null;
        spinachParser.vectorelem_return e12 = null;

        spinachParser.matrixelem_return e11 = null;

        spinachParser.variable_return variable56 = null;

        spinachParser.structassign_return structassign57 = null;

        spinachParser.subtractive_exp_return subtractive_exp59 = null;

        spinachParser.dotproduct_return dotproduct60 = null;

        spinachParser.matrixtranspose_return matrixtranspose61 = null;

        spinachParser.string_literal_return string_literal62 = null;

        spinachParser.functioncall_return functioncall64 = null;


        object ASSIGNMENT58_tree=null;
        object END_OF_STATEMENT63_tree=null;


          retval.ret = new AssignmentOperationElement();

        try 
    	{
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:3: ( ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) )
            // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:6: ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            	{
            		// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:6: ( variable | structassign | e12= vectorelem | e11= matrixelem )
            		int alt17 = 4;
            		alt17 = dfa17.Predict(input);
            		switch (alt17) 
            		{
            		    case 1 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:131:7: variable
            		        {
            		        	PushFollow(FOLLOW_variable_in_assignment739);
            		        	variable56 = variable();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 2 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:132:7: structassign
            		        {
            		        	PushFollow(FOLLOW_structassign_in_assignment749);
            		        	structassign57 = structassign();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 3 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:133:6: e12= vectorelem
            		        {
            		        	PushFollow(FOLLOW_vectorelem_in_assignment761);
            		        	e12 = vectorelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 4 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:134:7: e11= matrixelem
            		        {
            		        	PushFollow(FOLLOW_matrixelem_in_assignment774);
            		        	e11 = matrixelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;

            		}

            		ASSIGNMENT58=(IToken)Match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment782); 
            			ASSIGNMENT58_tree = (object)adaptor.Create(ASSIGNMENT58);
            			adaptor.AddChild(root_0, ASSIGNMENT58_tree);

            		// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:136:5: ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            		int alt19 = 2;
            		int LA19_0 = input.LA(1);

            		if ( ((LA19_0 >= INT_LITERAL && LA19_0 <= DOUBLE_LITERAL) || LA19_0 == LEFTBRACE || LA19_0 == 27 || LA19_0 == 45) )
            		{
            		    alt19 = 1;
            		}
            		else if ( (LA19_0 == VARIABLE) )
            		{
            		    int LA19_2 = input.LA(2);

            		    if ( (LA19_2 == END_OF_STATEMENT || (LA19_2 >= DOT && LA19_2 <= MULTIPLY) || LA19_2 == 29 || LA19_2 == 33 || LA19_2 == 44) )
            		    {
            		        alt19 = 1;
            		    }
            		    else if ( (LA19_2 == LEFTBRACE) )
            		    {
            		        alt19 = 2;
            		    }
            		    else 
            		    {
            		        NoViableAltException nvae_d19s2 =
            		            new NoViableAltException("", 19, 2, input);

            		        throw nvae_d19s2;
            		    }
            		}
            		else 
            		{
            		    NoViableAltException nvae_d19s0 =
            		        new NoViableAltException("", 19, 0, input);

            		    throw nvae_d19s0;
            		}
            		switch (alt19) 
            		{
            		    case 1 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:136:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT
            		        {
            		        	// C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:136:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal )
            		        	int alt18 = 4;
            		        	switch ( input.LA(1) ) 
            		        	{
            		        	case INT_LITERAL:
            		        	case DOUBLE_LITERAL:
            		        	case LEFTBRACE:
            		        		{
            		        	    alt18 = 1;
            		        	    }
            		        	    break;
            		        	case VARIABLE:
            		        		{
            		        	    int LA18_2 = input.LA(2);

            		        	    if ( (LA18_2 == END_OF_STATEMENT || (LA18_2 >= DOT && LA18_2 <= MULTIPLY) || LA18_2 == 29 || LA18_2 == 33) )
            		        	    {
            		        	        alt18 = 1;
            		        	    }
            		        	    else if ( (LA18_2 == 44) )
            		        	    {
            		        	        alt18 = 2;
            		        	    }
            		        	    else 
            		        	    {
            		        	        NoViableAltException nvae_d18s2 =
            		        	            new NoViableAltException("", 18, 2, input);

            		        	        throw nvae_d18s2;
            		        	    }
            		        	    }
            		        	    break;
            		        	case 45:
            		        		{
            		        	    alt18 = 3;
            		        	    }
            		        	    break;
            		        	case 27:
            		        		{
            		        	    alt18 = 4;
            		        	    }
            		        	    break;
            		        		default:
            		        		    NoViableAltException nvae_d18s0 =
            		        		        new NoViableAltException("", 18, 0, input);

            		        		    throw nvae_d18s0;
            		        	}

            		        	switch (alt18) 
            		        	{
            		        	    case 1 :
            		        	        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:136:8: subtractive_exp
            		        	        {
            		        	        	PushFollow(FOLLOW_subtractive_exp_in_assignment792);
            		        	        	subtractive_exp59 = subtractive_exp();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 2 :
            		        	        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:136:67: dotproduct
            		        	        {
            		        	        	PushFollow(FOLLOW_dotproduct_in_assignment796);
            		        	        	dotproduct60 = dotproduct();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 3 :
            		        	        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:137:7: matrixtranspose
            		        	        {
            		        	        	PushFollow(FOLLOW_matrixtranspose_in_assignment805);
            		        	        	matrixtranspose61 = matrixtranspose();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 4 :
            		        	        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:137:66: string_literal
            		        	        {
            		        	        	PushFollow(FOLLOW_string_literal_in_assignment809);
            		        	        	string_literal62 = string_literal();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;

            		        	}

            		        	END_OF_STATEMENT63=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_assignment817); 
            		        		END_OF_STATEMENT63_tree = (object)adaptor.Create(END_OF_STATEMENT63);
            		        		adaptor.AddChild(root_0, END_OF_STATEMENT63_tree);


            		        }
            		        break;
            		    case 2 :
            		        // C:\\Users\\KULDEEP GANDHI\\Desktop\\pinac\\Spinach\\InterpreterFrontEnd\\spinach.g:139:7: functioncall
            		        {
            		        	PushFollow(FOLLOW_functioncall_in_assignment825);
            		        	functioncall64 = functioncall();
            		        	state.followingStackPointer--;

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

            		        }
            		        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;
    }
Exemplo n.º 4
0
    // throws RecognitionException [1]
    // $ANTLR start "assignment"
    // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:94:1: assignment returns [AssignmentOperationElement ret] : ( variable | structassign ) ASSIGNMENT ( var_int_or_double_literal | addition ) END_OF_STATEMENT ;
    public spinachParser.assignment_return assignment()
    {
        spinachParser.assignment_return retval = new spinachParser.assignment_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ASSIGNMENT53 = null;
        IToken END_OF_STATEMENT56 = null;
        spinachParser.variable_return variable51 = null;

        spinachParser.structassign_return structassign52 = null;

        spinachParser.var_int_or_double_literal_return var_int_or_double_literal54 = null;

        spinachParser.addition_return addition55 = null;

        object ASSIGNMENT53_tree=null;
        object END_OF_STATEMENT56_tree=null;

          retval.ret = new AssignmentOperationElement();

        try
        {
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:98:3: ( ( variable | structassign ) ASSIGNMENT ( var_int_or_double_literal | addition ) END_OF_STATEMENT )
            // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:98:5: ( variable | structassign ) ASSIGNMENT ( var_int_or_double_literal | addition ) END_OF_STATEMENT
            {
                root_0 = (object)adaptor.GetNilNode();

                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:98:5: ( variable | structassign )
                int alt9 = 2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0 == VARIABLE) )
                {
                    int LA9_1 = input.LA(2);

                    if ( (LA9_1 == ASSIGNMENT) )
                    {
                        alt9 = 1;
                    }
                    else if ( (LA9_1 == DOT) )
                    {
                        alt9 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d9s1 =
                            new NoViableAltException("", 9, 1, input);

                        throw nvae_d9s1;
                    }
                }
                else
                {
                    NoViableAltException nvae_d9s0 =
                        new NoViableAltException("", 9, 0, input);

                    throw nvae_d9s0;
                }
                switch (alt9)
                {
                    case 1 :
                        // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:98:6: variable
                        {
                            PushFollow(FOLLOW_variable_in_assignment538);
                            variable51 = variable();
                            state.followingStackPointer--;

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

                        }
                        break;
                    case 2 :
                        // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:99:7: structassign
                        {
                            PushFollow(FOLLOW_structassign_in_assignment548);
                            structassign52 = structassign();
                            state.followingStackPointer--;

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

                        }
                        break;

                }

                ASSIGNMENT53=(IToken)Match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment557);
                    ASSIGNMENT53_tree = (object)adaptor.Create(ASSIGNMENT53);
                    adaptor.AddChild(root_0, ASSIGNMENT53_tree);

                // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:101:5: ( var_int_or_double_literal | addition )
                int alt10 = 2;
                switch ( input.LA(1) )
                {
                case VARIABLE:
                    {
                    int LA10_1 = input.LA(2);

                    if ( (LA10_1 == END_OF_STATEMENT) )
                    {
                        alt10 = 1;
                    }
                    else if ( (LA10_1 == PLUS) )
                    {
                        alt10 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d10s1 =
                            new NoViableAltException("", 10, 1, input);

                        throw nvae_d10s1;
                    }
                    }
                    break;
                case INT_LITERAL:
                    {
                    int LA10_2 = input.LA(2);

                    if ( (LA10_2 == END_OF_STATEMENT) )
                    {
                        alt10 = 1;
                    }
                    else if ( (LA10_2 == PLUS) )
                    {
                        alt10 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d10s2 =
                            new NoViableAltException("", 10, 2, input);

                        throw nvae_d10s2;
                    }
                    }
                    break;
                case DOUBLE_LITERAL:
                    {
                    int LA10_3 = input.LA(2);

                    if ( (LA10_3 == END_OF_STATEMENT) )
                    {
                        alt10 = 1;
                    }
                    else if ( (LA10_3 == PLUS) )
                    {
                        alt10 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d10s3 =
                            new NoViableAltException("", 10, 3, input);

                        throw nvae_d10s3;
                    }
                    }
                    break;
                    default:
                        NoViableAltException nvae_d10s0 =
                            new NoViableAltException("", 10, 0, input);

                        throw nvae_d10s0;
                }

                switch (alt10)
                {
                    case 1 :
                        // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:101:6: var_int_or_double_literal
                        {
                            PushFollow(FOLLOW_var_int_or_double_literal_in_assignment565);
                            var_int_or_double_literal54 = var_int_or_double_literal();
                            state.followingStackPointer--;

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

                        }
                        break;
                    case 2 :
                        // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:102:7: addition
                        {
                            PushFollow(FOLLOW_addition_in_assignment576);
                            addition55 = addition();
                            state.followingStackPointer--;

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

                        }
                        break;

                }

                END_OF_STATEMENT56=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_assignment586);
                    END_OF_STATEMENT56_tree = (object)adaptor.Create(END_OF_STATEMENT56);
                    adaptor.AddChild(root_0, END_OF_STATEMENT56_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;
    }
Exemplo n.º 5
0
    // $ANTLR start "assignment"
    // spinach.g:138:1: assignment returns [AssignmentOperationElement ret] : ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) ;
    public spinachParser.assignment_return assignment() // throws RecognitionException [1]
    {   
        spinachParser.assignment_return retval = new spinachParser.assignment_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ASSIGNMENT66 = null;
        IToken END_OF_STATEMENT71 = null;
        spinachParser.vectorelem_return e12 = null;

        spinachParser.matrixelem_return e11 = null;

        spinachParser.variable_return variable64 = null;

        spinachParser.structassign_return structassign65 = null;

        spinachParser.subtractive_exp_return subtractive_exp67 = null;

        spinachParser.dotproduct_return dotproduct68 = null;

        spinachParser.matrixtranspose_return matrixtranspose69 = null;

        spinachParser.string_literal_return string_literal70 = null;

        spinachParser.functioncall_return functioncall72 = null;


        object ASSIGNMENT66_tree=null;
        object END_OF_STATEMENT71_tree=null;


          retval.ret = new AssignmentOperationElement();

        try 
    	{
            // spinach.g:142:3: ( ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) ) )
            // spinach.g:142:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            {
            	root_0 = (object)adaptor.GetNilNode();

            	// spinach.g:142:5: ( ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall ) )
            	// spinach.g:142:6: ( variable | structassign | e12= vectorelem | e11= matrixelem ) ASSIGNMENT ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            	{
            		// spinach.g:142:6: ( variable | structassign | e12= vectorelem | e11= matrixelem )
            		int alt17 = 4;
            		alt17 = dfa17.Predict(input);
            		switch (alt17) 
            		{
            		    case 1 :
            		        // spinach.g:142:7: variable
            		        {
            		        	PushFollow(FOLLOW_variable_in_assignment789);
            		        	variable64 = variable();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 2 :
            		        // spinach.g:143:7: structassign
            		        {
            		        	PushFollow(FOLLOW_structassign_in_assignment799);
            		        	structassign65 = structassign();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 3 :
            		        // spinach.g:144:6: e12= vectorelem
            		        {
            		        	PushFollow(FOLLOW_vectorelem_in_assignment811);
            		        	e12 = vectorelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;
            		    case 4 :
            		        // spinach.g:145:7: e11= matrixelem
            		        {
            		        	PushFollow(FOLLOW_matrixelem_in_assignment824);
            		        	e11 = matrixelem();
            		        	state.followingStackPointer--;

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

            		        }
            		        break;

            		}

            		ASSIGNMENT66=(IToken)Match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment832); 
            			ASSIGNMENT66_tree = (object)adaptor.Create(ASSIGNMENT66);
            			adaptor.AddChild(root_0, ASSIGNMENT66_tree);

            		// spinach.g:147:5: ( ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT | functioncall )
            		int alt19 = 2;
            		int LA19_0 = input.LA(1);

            		if ( ((LA19_0 >= INT_LITERAL && LA19_0 <= DOUBLE_LITERAL) || LA19_0 == LEFTBRACE || LA19_0 == 45 || LA19_0 == 58) )
            		{
            		    alt19 = 1;
            		}
            		else if ( (LA19_0 == VARIABLE) )
            		{
            		    int LA19_2 = input.LA(2);

            		    if ( (LA19_2 == END_OF_STATEMENT || (LA19_2 >= PLUS && LA19_2 <= MULTIPLY) || LA19_2 == DOT || LA19_2 == 29 || LA19_2 == 33 || LA19_2 == 44) )
            		    {
            		        alt19 = 1;
            		    }
            		    else if ( (LA19_2 == LEFTBRACE) )
            		    {
            		        alt19 = 2;
            		    }
            		    else 
            		    {
            		        NoViableAltException nvae_d19s2 =
            		            new NoViableAltException("", 19, 2, input);

            		        throw nvae_d19s2;
            		    }
            		}
            		else 
            		{
            		    NoViableAltException nvae_d19s0 =
            		        new NoViableAltException("", 19, 0, input);

            		    throw nvae_d19s0;
            		}
            		switch (alt19) 
            		{
            		    case 1 :
            		        // spinach.g:147:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal ) END_OF_STATEMENT
            		        {
            		        	// spinach.g:147:6: ( subtractive_exp | dotproduct | matrixtranspose | string_literal )
            		        	int alt18 = 4;
            		        	switch ( input.LA(1) ) 
            		        	{
            		        	case INT_LITERAL:
            		        	case DOUBLE_LITERAL:
            		        	case LEFTBRACE:
            		        		{
            		        	    alt18 = 1;
            		        	    }
            		        	    break;
            		        	case VARIABLE:
            		        		{
            		        	    int LA18_2 = input.LA(2);

            		        	    if ( (LA18_2 == END_OF_STATEMENT || (LA18_2 >= PLUS && LA18_2 <= MULTIPLY) || LA18_2 == DOT || LA18_2 == 29 || LA18_2 == 33) )
            		        	    {
            		        	        alt18 = 1;
            		        	    }
            		        	    else if ( (LA18_2 == 44) )
            		        	    {
            		        	        alt18 = 2;
            		        	    }
            		        	    else 
            		        	    {
            		        	        NoViableAltException nvae_d18s2 =
            		        	            new NoViableAltException("", 18, 2, input);

            		        	        throw nvae_d18s2;
            		        	    }
            		        	    }
            		        	    break;
            		        	case 45:
            		        		{
            		        	    alt18 = 3;
            		        	    }
            		        	    break;
            		        	case 58:
            		        		{
            		        	    alt18 = 4;
            		        	    }
            		        	    break;
            		        		default:
            		        		    NoViableAltException nvae_d18s0 =
            		        		        new NoViableAltException("", 18, 0, input);

            		        		    throw nvae_d18s0;
            		        	}

            		        	switch (alt18) 
            		        	{
            		        	    case 1 :
            		        	        // spinach.g:147:8: subtractive_exp
            		        	        {
            		        	        	PushFollow(FOLLOW_subtractive_exp_in_assignment842);
            		        	        	subtractive_exp67 = subtractive_exp();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 2 :
            		        	        // spinach.g:147:67: dotproduct
            		        	        {
            		        	        	PushFollow(FOLLOW_dotproduct_in_assignment846);
            		        	        	dotproduct68 = dotproduct();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 3 :
            		        	        // spinach.g:148:7: matrixtranspose
            		        	        {
            		        	        	PushFollow(FOLLOW_matrixtranspose_in_assignment855);
            		        	        	matrixtranspose69 = matrixtranspose();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;
            		        	    case 4 :
            		        	        // spinach.g:148:66: string_literal
            		        	        {
            		        	        	PushFollow(FOLLOW_string_literal_in_assignment859);
            		        	        	string_literal70 = string_literal();
            		        	        	state.followingStackPointer--;

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

            		        	        }
            		        	        break;

            		        	}

            		        	END_OF_STATEMENT71=(IToken)Match(input,END_OF_STATEMENT,FOLLOW_END_OF_STATEMENT_in_assignment867); 
            		        		END_OF_STATEMENT71_tree = (object)adaptor.Create(END_OF_STATEMENT71);
            		        		adaptor.AddChild(root_0, END_OF_STATEMENT71_tree);


            		        }
            		        break;
            		    case 2 :
            		        // spinach.g:150:7: functioncall
            		        {
            		        	PushFollow(FOLLOW_functioncall_in_assignment875);
            		        	functioncall72 = functioncall();
            		        	state.followingStackPointer--;

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

            		        }
            		        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;
    }