-/** 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();
+
+ /**
+ * <b>Optional:</b> <i>If possible</i>, this method will return a
+ * <60 char long rendering of the input region (for example, if
+ * the input is a region of characters, it would be those
+ * characters, possibly with ellipses in the middle to truncate
+ * the length) -- otherwise, returns null.
+ */
+ public abstract String showRegion(Region<Token> r);