private Token parseNumber() throws IOException, SyntaxFormatException {
		long num = 0;
		while (Character.isDigit(scanner.getCurrentChar())) {
			num = num * 10 + Integer.parseInt(scanner.getCurrentChar().toString());
			if (num > Integer.MAX_VALUE || num < Integer.MIN_VALUE) {
				throwFormatException("number is outof range");
				return new Token(TokenType.UNKNOWN);
			}
			scanner.next();
		}
		// 0999aaa is invalid
		if (Character.isLetter(scanner.getCurrentChar())) {
			throwFormatException("unrecognized number");
			return new Token(TokenType.UNKNOWN);
		}
		return new Token((int) num);
	}