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

        Node e1 = null;

        Node e2 = null;

        Node e3 = null;

        Node e4 = null;


        try {
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:56:1: (e1= unaexpr ( '*' e2= unaexpr | '/' e3= unaexpr | '%' e4= unaexpr )* )
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:56:3: e1= unaexpr ( '*' e2= unaexpr | '/' e3= unaexpr | '%' e4= unaexpr )*
            {
            pushFollow(FOLLOW_unaexpr_in_mulexpr307);
            e1=unaexpr();

            state._fsp--;

            value = e1;
            // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:57:1: ( '*' e2= unaexpr | '/' e3= unaexpr | '%' e4= unaexpr )*
            loop6:
            do {
                int alt6=4;
                switch ( input.LA(1) ) {
                case 30:
                    {
                    alt6=1;
                    }
                    break;
                case 31:
                    {
                    alt6=2;
                    }
                    break;
                case 32:
                    {
                    alt6=3;
                    }
                    break;

                }

                switch (alt6) {
            	case 1 :
            	    // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:57:3: '*' e2= unaexpr
            	    {
            	    match(input,30,FOLLOW_30_in_mulexpr313); 
            	    pushFollow(FOLLOW_unaexpr_in_mulexpr317);
            	    e2=unaexpr();

            	    state._fsp--;

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

            	    }
            	    break;
            	case 2 :
            	    // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:58:3: '/' e3= unaexpr
            	    {
            	    match(input,31,FOLLOW_31_in_mulexpr323); 
            	    pushFollow(FOLLOW_unaexpr_in_mulexpr327);
            	    e3=unaexpr();

            	    state._fsp--;

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

            	    }
            	    break;
            	case 3 :
            	    // C:\\Documents and Settings\\Administrator\\workspace_android4\\myosotis\\grammar\\MemoryBasic.g:59:3: '%' e4= unaexpr
            	    {
            	    match(input,32,FOLLOW_32_in_mulexpr333); 
            	    pushFollow(FOLLOW_unaexpr_in_mulexpr337);
            	    e4=unaexpr();

            	    state._fsp--;

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

            	    }
            	    break;

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


            }

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