-/** a token of input -- note that this represents an <i>actual input token</i> rather than an <tt>Element</tt> which <i>matches</i> a token */
-public interface Input<Tok> {
+/** <font color=purple>a stream of <tt>Token</tt>s to be parsed</font> */
+public interface Input<Token> {
+
+ /** returns the token just beyond the current location and advances beyond it */
+ public Token next() throws IOException;
+
+ /** returns the location the input stream is currently at */
+ public Location<Token> getLocation();
+
+ /** <font color=purple>a location (position) in the input stream -- <i>between tokens</i></font> */
+ public static interface Location<Token> extends Comparable<Location> {