private boolean isNumberStart() {
        if (isEof()) {
            return false;
        }

        int[] c = peek3();
        if (isDigit(c[0]) || (c[0] == '.' && isDigit(c[1]))) {
            return true;
        }

        if (c[0] == '+' || c[0] == '-') {
            if (isDigit(c[1])) {
                return true;
            }

            if (c[1] == '.' && isDigit(c[2])) {
                return true;
            }
        }

        return false;
    }