private CalculatableNode nextNode() throws IOException {
		// expects number or "("
		int ttype;
		ttype = tokenizer.nextToken();
		if (ttype == StreamTokenizer.TT_NUMBER) {
			return new NumericalNode((int) tokenizer.nval);
		}
		if (ttype >= 0) {
			// sign character such as +-*/()
			char sign = (char) tokenizer.ttype;
			if (sign == '(') {
				CalculatableNode node = parseNode();
				return node;
			}
		}
		throw new IllegalFormulaException("数式が不正です");
	}