checkpoint harmony
[sbp.git] / src / edu / berkeley / sbp / Atom.java
index aac834b..2589dde 100644 (file)
@@ -35,7 +35,7 @@ public abstract class Atom<T extends Token> extends Element implements Topology<
         private final Element e;
         public Infer(Element e) { this.e = e; }
         public Topology<T> top() { return (Topology<T>)e.toAtom(); }
-        public String toString() { return e.toString(); }
+        public String toString() { return e.toString(); /* FIXME should be toAtom() */ }
     }
     
     public static class Invert<T extends Token> extends Atom<T> {
@@ -45,5 +45,14 @@ public abstract class Atom<T extends Token> extends Element implements Topology<
         public String toString() { return "~"+a; }
     }
     
+    public static class Hack<T extends Token> extends Atom<T> {
+        private final Atom<T> a;
+        static final Topology leftright =
+            edu.berkeley.sbp.misc.CharToken.rightBrace.union(edu.berkeley.sbp.misc.CharToken.leftBrace);
+        public Hack(Atom<T> a) { this.a = a; }
+        public Topology<T> top() { return ((Topology<T>)a.top()).minus(leftright); }
+        public String toString() { return "~"+a; }
+    }
+    
 }