X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FInput.java;h=13c45d49de0476210819bc76befe901ce5c7e653;hp=b326468aff26137e5e4a56ffcad3741c87d76b3d;hb=0ddfec9ac2783f59115205dc0f3806137265c59c;hpb=6a2ea790f843e058c7e67d3c7d1deebadcfe1fd5 diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java index b326468..13c45d4 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,22 +8,59 @@ 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 { - /** this is declared abstract as a way of forcing subclasses to provide a thoughtful implementation */ - public abstract String toString(); + /** returns the token just beyond the current location and advances beyond it */ + public Token next() throws IOException; - /** 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(); - } + /** returns the location the input stream is currently at */ + public Location getLocation(); + + /** should return a short string describing where the input is coming from */ + public String getName(); + + /** + * 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); - /** 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 /* 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(); + + } + }