X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fedu%2Fberkeley%2Fsbp%2FInput.java;h=6e4b0eefb63de68177f1fb80a286d07bedb18aff;hb=6ff6d681e214e91ca3fa5afdff60a0fb88227404;hp=846fd9a7b60de45439cc7650913e8121e6f1c75a;hpb=e12a3098c6ed3cbfa6493870af3688f833c4f8ac;p=sbp.git
diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java
index 846fd9a..6e4b0ee 100644
--- a/src/edu/berkeley/sbp/Input.java
+++ b/src/edu/berkeley/sbp/Input.java
@@ -1,3 +1,5 @@
+// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
+
package edu.berkeley.sbp;
import java.io.*;
import java.util.*;
@@ -6,7 +8,7 @@ import java.lang.ref.*;
import edu.berkeley.sbp.*;
import edu.berkeley.sbp.util.*;
-/** a stream of tokens to be parsed */
+/** a stream of Tokens to be parsed */
public interface Input {
/** returns the token just beyond the current location and advances beyond it */
@@ -15,23 +17,47 @@ public interface Input {
/** returns the location the input stream is currently at */
public Location getLocation();
- /** a location between tokens in the input stream */
- public static interface Location extends Comparable {
+ /**
+ * Optional: If possible, 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 r);
+
+ /** 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);
+
public String toString();
+
+ /** the location following this one */
+ public Location next();
+
+ /** the location preceding this one */
+ public Location prev();
}
- public static class Region /* implements Topology> */ {
- public final Loc start;
- public final Loc end;
- public Region(Loc a, Loc b) {
- switch(a.compareTo(b)) {
- case -1:
- case 0: start=a; end=b; return;
- case 1: start=b; end=a; return;
- default: throw new Error("impossible");
- }
- }
+ /** a contiguous set of Locations */
+ public static interface Region /* implements Topology> */ {
+
+ /**
+ * the toString() method of Region should return a <80char
+ * "rendition" of the input region, 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();
+
}
+
}