private boolean parseOctalNumber() throws SQLParserException { int i = offset + 1; while (i < source.length() && strategy.isOctalNumber(source.charAt(i))) i++; if (i == offset + 1) throw new SQLParserException(); tokenType = TokenType.Number; start = offset; end = offset = i; tokenString = null; return true; }
private boolean parseNumber() throws SQLParserException { char leader = source.charAt(offset); boolean isFloat = (leader == '.'); int i = offset + 1; if (i >= source.length()) { if (isFloat) return false; tokenType = TokenType.Number; start = offset; end = offset = i; tokenString = null; return true; } char ch = source.charAt(i); if (leader == '0') { if (strategy.isOctalNumber(ch)) { return parseOctalNumber(); } else if (ch == 'x') { return parseHexNumber(); } } else if (leader == '.' && !strategy.isDecNumber(ch)) { return false; } while (i < source.length()) { ch = source.charAt(i); if (ch == '.') { if (isFloat) break; else isFloat = true; } else if (!strategy.isDecNumber(ch)) { break; } i++; } tokenType = TokenType.Number; start = offset; end = offset = i; tokenString = null; return true; }