package bjc.pratt.tokens; import static bjc.pratt.tokens.StringToken.litToken; import java.util.Iterator; import bjc.pratt.Token; import bjc.pratt.TokenStream; /** * Simple implementation of token stream for strings. * * The terminal token here is represented by a token with type and value * '(end)'. * * @author EVE * */ public class StringTokenStream extends TokenStream { private final Iterator> iter; private Token curr; /** * Create a new token stream from a iterator. * * @param itr * The iterator to use. * */ public StringTokenStream(final Iterator> itr) { iter = itr; } @Override public Token current() { return curr; } @Override public Token next() { if (iter.hasNext()) { curr = iter.next(); } else { curr = litToken("(end)"); } return curr; } @Override public boolean hasNext() { return iter.hasNext(); } }