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.*;
import edu.berkeley.sbp.*;
/** a token of input -- note that this represents an actual input token rather than an Element which matches a token */
public interface Token {
// FIXME!!! remove this
/** converts this Token into a standalone result (ie for a non-rewriting pattern) */
public String result();
/** this is declared abstract as a way of forcing subclasses to provide a thoughtful implementation */
public abstract String toString();
public abstract Location getLocation();
/** a sequence of input tokens; returns null when EOF is reached */
public static interface Stream {
public T next() throws IOException;
}
/** a location within the input stream */
public static interface Location {
public String toString();
public String getContext();
}
}