コード例 #1
0
  public void reset() {
    super.reset();

    isEsc = false;
    isSQuot = false;
    isDQuot = false;
    tokLevel = 1;
    tokLen = 0;
  }
コード例 #2
0
  /**
   * Retrives the next token.
   *
   * @return The next token.
   */
  public String nextToken() {
    CustomSeparator csep;
    TokenSep sep;
    String s = null;
    int i, j;

    if (putToken != null) {
      s = putToken;
      putToken = null;
      return s;
    }

    if (savedToken != null) {
      s = savedToken;
      tokIdx = savedIdx;
      savedToken = null;
      return s;
    }

    if (sIdx >= eIdx) throw new NoSuchElementException("No more tokens available");

    for (sep = delims; sep != null; sep = sep.getNext()) sep.reset();

    if (customSeps != null) {
      for (i = 0; i < customSeps.size(); i++) ((CustomSeparator) customSeps.get(i)).reset();
    }

    for (i = sIdx; i < eIdx; i++) {
      char c = source.charAt(i);

      for (j = 0; customSeps != null && j < customSeps.size(); j++) {
        csep = (CustomSeparator) customSeps.get(j);

        if (csep.addChar(c)) break;
      }
      if (customSeps != null && j < customSeps.size()) {
        csep = (CustomSeparator) customSeps.get(j);

        while (csep.hasFreePart() && i + 1 < eIdx) if (csep.endChar(source.charAt(++i))) break;
        i -= Math.min(csep.getPeekCount(), i);

        int clen = Math.min(i + 1, source.length());

        if (i - sIdx + 1 > csep.tokenLength()) {
          s = source.substring(sIdx, i - csep.tokenLength() + 1);

          savedIdx = i - csep.tokenLength() + 1;
          savedToken = source.substring(savedIdx, clen);
        } else {
          s = source.substring(sIdx, clen);
        }

        tokIdx = sIdx;
        sIdx = i + 1;
        break;
      }

      for (sep = delims; sep != null; sep = sep.getNext()) if (sep.addChar(c)) break;
      if (sep != null) {
        if (i - sIdx + 1 > sep.length()) {
          s = source.substring(sIdx, i - sep.length() + 1);
          savedIdx = i - sep.length() + 1;
          savedToken = sep.getString();
        } else {
          s = sep.getString();
        }
        tokIdx = sIdx;
        sIdx = i + 1;
        break;
      }
    }

    if (s == null) {
      s = source.substring(sIdx);
      tokIdx = sIdx;
      sIdx = eIdx;
    }

    return s;
  }
コード例 #3
0
 public void reset() {
   super.reset();
   hasCr = false;
   hasLf = false;
   hasPeeked = false;
 }
コード例 #4
0
 public void reset() {
   super.reset();
   tokLen = 0;
   level = 1;
 }