--- /dev/null
+package edu.berkeley.sbp;
+import java.io.*;
+import java.util.*;
+import java.lang.reflect.*;
+import java.lang.ref.*;
+import edu.berkeley.sbp.*;
+import edu.berkeley.sbp.util.*;
+
+/** 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 {
+
+ /** this is declared abstract as a way of forcing subclasses to provide a thoughtful implementation */
+ public abstract String toString();
+
+ /** a sequence of input tokens; returns null when EOF is reached */
+ public static interface Stream<Tok> {
+ public Tok next(int numstates, int resets, int waits) throws IOException;
+ public abstract Location getLocation();
+ }
+
+ /** a location *between tokens* in the input stream */
+ public static interface Location {
+ public String toString();
+ }
+}
+
+