private Expr factor() {
		if (theTokenizer.ttype == '(') {
			theTokenizer.next();
			Expr exp = expr();
			theTokenizer.accept(')');
			return exp;
		} else if (theTokenizer.ttype == Tokenizer.TT_NUMBER) {
			int x = (int) theTokenizer.nval;
			theTokenizer.next();
			return new Num(x);
        } else if (theTokenizer.ttype == Tokenizer.TT_WORD) {
            String name = theTokenizer.sval;
            theTokenizer.next();
            return new Var(name, 0);
		} else {
			throw new RuntimeException("\nExprParser.factor: found:  " + theTokenizer.found());
		}
	}