checkpoint
[sbp.git] / src / edu / berkeley / sbp / Input.java
diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java
new file mode 100644 (file)
index 0000000..b326468
--- /dev/null
@@ -0,0 +1,27 @@
+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();
+    }
+}
+
+