Exemplo n.º 1
0
  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;
  }
Exemplo n.º 2
0
  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;
  }