/** an implementation of Token for streams of Java <tt>char</tt> values */
public class CharToken implements IntegerMappable {
- public static final Atom leftBrace = new CharRange(new IntegerTopology<CharToken>(9998)) { public String toString() { return "{"; } };
- public static final Atom rightBrace = new CharRange(new IntegerTopology<CharToken>(9999)) { public String toString() { return "}"; } };
+ public static final Atom leftBrace = new CharRange(new IntegerTopology<CharToken>(null, 9998)) { public String toString() { return "{"; } };
+ public static final Atom rightBrace = new CharRange(new IntegerTopology<CharToken>(null, 9999)) { public String toString() { return "}"; } };
public static final CharToken left = new CharToken((char)9998);
public static final CharToken right = new CharToken((char)9999);
- static final Range.Set all = new Range.Set(new Range(0, Character.MAX_VALUE));
- public static final Atom any = new CharRange(new IntegerTopology<CharToken>(all));
- public static final Atom none = new CharRange(new IntegerTopology<CharToken>());
-
// Private //////////////////////////////////////////////////////////////////////////////
public final char c;
public int toInt() { return (int)c; }
- public static class Stream extends CartesianInput<CharToken> {
- private final Reader r;
-
- public Stream(String s) { this(new StringReader(s)); }
- public Stream(Reader r) { this(r, null); }
- public Stream(Reader r, String s) { this.r = r; }
- public Stream(InputStream i) { this(i, null); }
- public Stream(InputStream i, String s) { this(new InputStreamReader(i), s); }
-
- boolean cr = false;
- public boolean isCR() { return cr; }
- public CharToken next() throws IOException {
- cr = false;
- int i = r.read();
- if (i==-1) return null;
- char c = (char)i;
- cr = c=='\n';
- return new CharToken(c);
- }
- }
}