package tokeniterator;

import java.util.*;

public class TokenIterator {
  
  StringTokenizer st;
  String current;
  String delim;
  
  public TokenIterator(String str, String specialtokens, String delim) {
    st = new StringTokenizer(str,specialtokens+delim,true);
    this.delim = delim;
    current = nextToken();
  }
  
  public boolean hasNext() {
    return current!=null;
  }
  
  public String next() {
    if (current==null)
      throw new RuntimeException("Non ci sono token disponibili.");
    String r = current;
    current = nextToken();
    return r;
  }
  
  public String peek() {
    if (current==null)
      throw new RuntimeException("Non ci sono token disponibili.");
    return current;
  }

  // restituisce il prossimo token oppure null
  private String nextToken() {
    String n = delim;
    while (st.hasMoreTokens() && delim.indexOf(n)>=0) {
      n = st.nextToken();
    }
    if (delim.indexOf(n)>=0)
      return null;
    else
      return n;
  }
  
}

