checkpoint
authoradam <adam@megacz.com>
Sun, 15 Jan 2006 09:50:16 +0000 (04:50 -0500)
committeradam <adam@megacz.com>
Sun, 15 Jan 2006 09:50:16 +0000 (04:50 -0500)
darcs-hash:20060115095016-5007d-ae2b197b6b8e10cd869dc0e6ceb1641b024b95ef.gz

src/edu/berkeley/sbp/misc/CharRange.java
src/edu/berkeley/sbp/misc/CharTopology.java

index 475a68c..4fd319d 100644 (file)
@@ -8,34 +8,13 @@ import edu.berkeley.sbp.Token.Location;
 import edu.berkeley.sbp.util.*;
 
 public class CharRange extends Atom<Character> {
-    private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'"); }
-    private Topology<Character> t;
+
     public CharRange(char a) { this(a,a); }
     public CharRange(char a, char b) { this(new CharTopology(a, b)); }
     public CharRange(Topology<Character> t) { this.t = t; }
-    public Topology<Character> top() { return t; }
-    public String toString() {
-        StringBuffer sb = new StringBuffer();
-        sb.append('[');
-        Range.Set ranges = ((IntegerTopology)top()).getRanges();
-        if (ranges.size() == -1 || ranges.size() > Character.MAX_VALUE/2) {
-            sb.append('~');
-            ranges = ranges.complement();
-        }
-        ranges = ranges.intersect(all);
-        for(Range r : ranges) {
-            if (r.isMinNegInf() || r.isMaxPosInf()) throw new Error("should not happen");
-            if (r.getMin()==r.getMax()) {
-                sb.append(esc((char)r.getMin()));
-            } else{
-                sb.append(esc((char)r.getMin()));
-                sb.append('-');
-                sb.append(esc((char)r.getMax()));
-            }
-        }
-        sb.append(']');
-        return sb.toString();
-    }
+
+    private Topology<Character> t;
+    public  Topology<Character> top() { return t; }
 
     public static final char left       = (char)9998;
     public static final char right      = (char)9999;
@@ -43,7 +22,8 @@ public class CharRange extends Atom<Character> {
     public static final Atom rightBrace = new CharRange(right,right) { public String toString() { return "}"; } };
 
     public static Atom set(Range.Set r) { return new CharRange(new CharTopology(r)); }
-    private static final Range.Set all = new Range.Set(new Range(0, Character.MAX_VALUE));
+
+    public String toString() { return t.toString(); }
 
     /** returns an element which exactly matches the string given */
     public static Element string(String s) {
index 796a4ce..81ab840 100644 (file)
@@ -3,8 +3,36 @@ import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.util.*;
 
 public class CharTopology extends IntegerTopology<Character> implements Functor<Character,Integer> {
-    public Integer invoke(Character c) { return (int)c.charValue(); }
+
     public CharTopology()               { super(null); }
     public CharTopology(Range.Set r)    { super(null, r); }
     public CharTopology(char a, char b) { super(null, a, b); }
+
+    public Integer invoke(Character c) { return (int)c.charValue(); }
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append('[');
+        Range.Set ranges = getRanges();
+        if (ranges.size() == -1 || ranges.size() > Character.MAX_VALUE/2) {
+            sb.append('~');
+            ranges = ranges.complement();
+        }
+        ranges = ranges.intersect(new Range.Set(new Range(0, Character.MAX_VALUE)));
+        for(Range r : ranges) {
+            if (r.isMinNegInf() || r.isMaxPosInf()) throw new Error("should not happen");
+            if (r.getMin()==r.getMax()) {
+                sb.append(esc((char)r.getMin()));
+            } else{
+                sb.append(esc((char)r.getMin()));
+                sb.append('-');
+                sb.append(esc((char)r.getMax()));
+            }
+        }
+        sb.append(']');
+        return sb.toString();
+    }
+
+    private String esc(char c) { return StringUtil.escapify(c+"", "[]-~\\\"\'"); }
+
 }