X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FInput.java;h=407d843a51f0651d32e51214cf83df36199fb767;hp=d8374cdf08e35af3a76c9023e76708841f0f692f;hb=38eb7943a4be918d46cb6517004e57ca91410ce0;hpb=a7b84506c2e1ed63343db215f76afced082e2826 diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java index d8374cd..407d843 100644 --- a/src/edu/berkeley/sbp/Input.java +++ b/src/edu/berkeley/sbp/Input.java @@ -6,16 +6,33 @@ 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 { +/** a stream of tokens to be parsed */ +public interface Input { - public Tok next(int numstates, int resets, int waits) throws IOException; - public abstract Location getLocation(); + /** returns the token just beyond the current location and advances beyond it */ + public Token next() throws IOException; - /** a location *between tokens* in the input stream */ - public static interface Location { + /** 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 { public String toString(); } + + public static class Region /* implements Topology> */ { + public final Loc start; + public final Loc end; + public String toString() { return start+"-"+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"); + } + } + } }