X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=inline;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FStringToken.java;fp=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FStringToken.java;h=fac11ab80c5d655d6df55f55761d15c8675fcb66;hb=4c5cadfb5604449d04e2cdaaae7b9a61795c9044;hp=0000000000000000000000000000000000000000;hpb=f2611533a5703f1256b5ed3a57e36b3909dedad0;p=sbp.git
diff --git a/src/edu/berkeley/sbp/misc/StringToken.java b/src/edu/berkeley/sbp/misc/StringToken.java
new file mode 100644
index 0000000..fac11ab
--- /dev/null
+++ b/src/edu/berkeley/sbp/misc/StringToken.java
@@ -0,0 +1,42 @@
+package edu.berkeley.sbp.misc;
+import java.io.*;
+import java.util.*;
+import java.lang.reflect.*;
+import java.lang.ref.*;
+import edu.berkeley.sbp.*;
+import edu.berkeley.sbp.*;
+import edu.berkeley.sbp.util.*;
+import edu.berkeley.sbp.*;
+
+/** an implementation of Token for streams of Java char values */
+public class StringToken implements Token {
+
+ public static final StringToken left = new StringToken(null, null) { public boolean equals(Object o) { return this==o; } };
+ public static final StringToken right = new StringToken(null, null) { public boolean equals(Object o) { return this==o; } };
+
+ public static final Atom leftBrace = new Atom(new DiscreteTopology(left)) { public String toString() { return "{"; } };
+ public static final Atom rightBrace = new Atom(new DiscreteTopology(right)) { public String toString() { return "}"; } };
+
+ private static class StringAtom extends Atom {
+ private String s;
+ public StringAtom(String s) { super(new DiscreteTopology(new StringToken(s, null))); this.s = s; }
+ public String toString() { return "[atom \""+s+"\"]"; }
+ }
+
+ /** returns an element which exactly matches the string given */
+ public static Element string(String s) {
+ return new StringAtom(s);
+ }
+
+ public static Topology top() { return new DiscreteTopology(); }
+
+ public final String s;
+ public final Location location;
+ private StringToken(String s, Location loc) { this.s = s; this.location = loc; }
+ public String result() { return s; }
+ public Location getLocation() { return location; }
+ public String toString() { return "\'"+StringUtil.escapify(s)+"\'"; }
+
+ public boolean equals(Object o) { return o!=null && o instanceof StringToken && s.equals(((StringToken)o).s); }
+ public int hashCode() { return s==null ? 0 : s.hashCode(); }
+}