X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FInput.java;h=ac2c486e94db2cef4490805c1de49911b62227c1;hp=9948ae40a2b69bf8cf42cd7198a214a35ef019b6;hb=2afdfe14e78fa0597186614937c679a09d74ecdf;hpb=82f9b8d4a2fadb14cb004e5cc9f14944458f2e6c diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java index 9948ae4..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 stream of tokens to be parsed */ +// FEATURE: Region implements Topology> + +/** a stream of Tokens to be parsed */ public interface Input { + /** 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; + public Token next() throws IOException; + + /** a short string describing where the input is coming from, such as a filename */ + public String getName(); - /** returns the location the input stream is currently at */ - public Location getLocation(); + /** 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 extends Comparable { public String toString(); - public Region createRegion(Location loc); + + /** 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(); + } - public static interface Region /* implements Topology> */ { } }