private Value term() throws Exception
    {
        Value previous, rval;
        previous = rval = factor();
        while(scan.sym == Token.mul || scan.sym == Token.div) {
            Token op = scan.sym;
            scan.next();
            previous = rval;
            Value next = factor();
	    Instruction ins;
	    if(op == Token.mul) {
		ins = new Mul(previous, next);
	    } else {            // op == Token.div
		ins = new Div(previous, next);
	    }
	    currentBB.addInstruction(ins);
	    rval = ins;
	}
        return rval;
    }