private Node term() {
		Token token = getToken();
		if (token.getType() == Node.OP_MINUS) {
			return new Node(Node.OP_NEG, term());
		} else if (token.getType() == Node.OP_OPAR) {
			Node node = exprAddSub();
			if (node == null) {
				return null;
			}
			token = getToken();
			if (token.getType() != Node.OP_CPAR) {
				node = null;
				ungetToken(token);
				return null;
			}
			return node;
		} else if (token.getType() == Node.OP_CONST) {
			return new Node(Node.OP_CONST, Integer.parseInt(token.getStr()));
		} else if (token.getType() == Node.OP_VALUE) {
			return new Node(Node.OP_VALUE, token.getStr());
		}
		return null;
	}