public final Node expr() throws RecognitionException {
        Node value = null;

        Node e1 = null;

        Node e2 = null;

        Node e3 = null;


        try {
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:49:1: (e1= mulexpr ( '+' e2= mulexpr | '-' e3= mulexpr )* )
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:49:3: e1= mulexpr ( '+' e2= mulexpr | '-' e3= mulexpr )*
            {
            pushFollow(FOLLOW_mulexpr_in_expr267);
            e1=mulexpr();

            state._fsp--;

            value = e1;
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:50:1: ( '+' e2= mulexpr | '-' e3= mulexpr )*
            loop5:
            do {
                int alt5=3;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==28) ) {
                    alt5=1;
                }
                else if ( (LA5_0==29) ) {
                    alt5=2;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:50:3: '+' e2= mulexpr
            	    {
            	    match(input,28,FOLLOW_28_in_expr273); 
            	    pushFollow(FOLLOW_mulexpr_in_expr277);
            	    e2=mulexpr();

            	    state._fsp--;

            	     value = Node.MakeNode(driver, Node.OP_PLUS, e1, e2); 

            	    }
            	    break;
            	case 2 :
            	    // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:51:3: '-' e3= mulexpr
            	    {
            	    match(input,29,FOLLOW_29_in_expr283); 
            	    pushFollow(FOLLOW_mulexpr_in_expr287);
            	    e3=mulexpr();

            	    state._fsp--;

            	     value = Node.MakeNode(driver, Node.OP_MINUS, e1, e3); 

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return value;
    }