X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FInput.java;h=ac2c486e94db2cef4490805c1de49911b62227c1;hb=80f8bc14a13b5e4912004e081ec96dc6ed807385;hp=b326468aff26137e5e4a56ffcad3741c87d76b3d;hpb=6a2ea790f843e058c7e67d3c7d1deebadcfe1fd5;p=sbp.git
diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java
index b326468..ac2c486 100644
--- a/src/edu/berkeley/sbp/Input.java
+++ b/src/edu/berkeley/sbp/Input.java
@@ -1,27 +1,66 @@
+// (C) 2006-2007 all rights reserved; see LICENSE file for BSD-style license
+
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 actual input token rather than an Element which matches a token */
-public interface Input {
+// FEATURE: Region implements Topology>
- /** this is declared abstract as a way of forcing subclasses to provide a thoughtful implementation */
- public abstract String toString();
+/** a stream of Tokens to be parsed */
+public interface Input {
- /** a sequence of input tokens; returns null when EOF is reached */
- public static interface Stream {
- public Tok next(int numstates, int resets, int waits) throws IOException;
- public abstract Location getLocation();
- }
+ /** the current location within the input stream */
+ public Location getLocation();
+
+ /** returns the token just beyond the current location and advances beyond it */
+ public Token next() throws IOException;
+
+ /** a short string describing where the input is coming from, such as a filename */
+ public String getName();
+
+ /** might called by Parser when it is done with the input */
+ public void close();
+
+ /**
+ * Optional: If possible, this method will return a
+ * rendering of the input region (for example, if the input is a
+ * region of characters, it would be those characters) --
+ * otherwise, returns null. In any case, the string returned
+ * will be no more than maxLength characters long;
+ * typically ellipses will be inserted to perform truncation.
+ */
+ public abstract String showRegion(Region r, int maxLength);
+
+ /** a location (position) in the input stream between tokens */
+ public static interface Location extends Comparable {
+
+ /** return the region between this location and loc */
+ public Region createRegion(Location loc);
- /** a location *between tokens* in the input stream */
- public static interface Location {
public String toString();
+
+ /** the location following this one */
+ public Location next();
+
+ /** the location preceding this one */
+ public Location prev();
}
+
+ /** a contiguous set of Locations */
+ public static interface Region {
+
+ /** should return less than 80 chars if possible */
+ public abstract String toString();
+
+ /** The location of the start of this region */
+ public abstract Location getStart();
+
+ /** The location of the end of this region */
+ public abstract Location getEnd();
+
+ }
+
}