checkpoint
authoradam <adam@megacz.com>
Sun, 15 Jan 2006 09:03:07 +0000 (04:03 -0500)
committeradam <adam@megacz.com>
Sun, 15 Jan 2006 09:03:07 +0000 (04:03 -0500)
darcs-hash:20060115090307-5007d-35d435f3b2126e6561192a0b904b66c806db8dbd.gz

src/edu/berkeley/sbp/misc/CharRange.java
src/edu/berkeley/sbp/misc/CharToken.java
src/edu/berkeley/sbp/misc/MetaGrammar.java

index 41aad06..932fbd6 100644 (file)
@@ -34,4 +34,28 @@ public class CharRange extends Atom<CharToken> {
         sb.append(']');
         return sb.toString();
     }
+    public static final Atom leftBrace  = CharToken.leftBrace;
+    public static final Atom rightBrace = CharToken.rightBrace;
+    public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology<CharToken>(r)); }
+
+    /** returns an element which exactly matches the string given */
+    public static Element string(String s) {
+        if (s.length() == 0) return Union.epsilon;
+        final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\"";
+        Element ret;
+        if (s.length() == 1) {
+            ret =
+                new CharRange(new IntegerTopology<CharToken>((int)s.charAt(0))) {
+                    public String toString() { return escapified; } };
+        } else {
+            Union ret2 = new Union("\""+s+"\"_str", true) {
+                    public String toString() { return escapified; } };
+            Element[] refs = new Element[s.length()];
+            for(int i=0; i<refs.length; i++) refs[i] = new CharRange(new IntegerTopology<CharToken>((int)s.charAt(i)));
+            ret2.add(Sequence.constant(refs, s, null, null));
+            ret = ret2;
+        }
+        return ret;
+    }
+
 }
index 9067d14..f6cb40b 100644 (file)
@@ -10,16 +10,6 @@ import edu.berkeley.sbp.util.*;
 /** an implementation of Token for streams of Java <tt>char</tt> values */
 public class CharToken implements IntegerMappable {
 
-    /** returns an element matching all characters between <tt>start</tt> and <tt>end</tt>, inclusive */
-    public static Atom positiveRange(char start, char end) {
-        return new CharRange(new IntegerTopology<CharToken>(new Range.Set(new Range((int)start, (int)end))));
-    }
-
-    /** returns an element matching all characters <b>not</b> between <tt>start</tt> and <tt>end</tt>, inclusive */
-    public static Atom negativeRange(char start, char end) {
-        return new CharRange(new IntegerTopology<CharToken>(new Range.Set(new Range((int)start, (int)end)).complement().intersect(all)));
-    }
-
     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 CharToken left       = new CharToken((char)9998);
@@ -29,33 +19,7 @@ public class CharToken implements IntegerMappable {
     public  static final Atom      any = new CharRange(new IntegerTopology<CharToken>(all));
     public  static final Atom     none = new CharRange(new IntegerTopology<CharToken>());
     public static IntegerTopology<CharToken> range(Range r) { return new IntegerTopology<CharToken>(r); }
-    public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology<CharToken>(r)); }
-
-    /** returns an element which exactly matches the string given */
-    public static Element string(String s) {
-        if (s.length() == 0) return Union.epsilon;
-        final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\"";
-        Element ret;
-        if (s.length() == 1) {
-            ret =
-                new CharRange(new IntegerTopology<CharToken>((int)s.charAt(0))) {
-                    public String toString() { return escapified; } };
-        } else {
-            Union ret2 = new Union("\""+s+"\"_str", true) {
-                    public String toString() { return escapified; } };
-            Element[] refs = new Element[s.length()];
-            for(int i=0; i<refs.length; i++) refs[i] = new CharRange(new IntegerTopology<CharToken>((int)s.charAt(i)));
-            ret2.add(Sequence.constant(refs, s, null, null));
-            ret = ret2;
-        }
-        return ret;
-    }
-
-    /** FIXME */
-    public static Topology<CharToken> top() { return new IntegerTopology<CharToken>(); }
-    public static Topology<CharToken> top(String s) throws java.text.ParseException {
-        return new IntegerTopology<CharToken>(Range.Set.parse(s));
-    }
+    //public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology<CharToken>(r)); }
 
     // Private //////////////////////////////////////////////////////////////////////////////
 
index c8665fa..4b5f707 100644 (file)
@@ -29,10 +29,10 @@ public class MetaGrammar extends StringWalker {
     private String startSymbol;
     private boolean strings;
 
-    private Element  set(Range.Set r) { if (strings) throw new Error(); return CharToken.set(r); }
-    private Element  string(String s) { return strings ? StringToken.string(s) : CharToken.string(s); }
-    private Atom     leftBrace()      { return strings ? StringToken.leftBrace : CharToken.leftBrace; }
-    private Atom     rightBrace()     { return strings ? StringToken.rightBrace : CharToken.rightBrace; }
+    private Element  set(Range.Set r) { if (strings) throw new Error(); return CharRange.set(r); }
+    private Element  string(String s) { return strings ? StringToken.string(s) : CharRange.string(s); }
+    private Atom     leftBrace()      { return strings ? StringToken.leftBrace : CharRange.leftBrace; }
+    private Atom     rightBrace()     { return strings ? StringToken.rightBrace : CharRange.rightBrace; }
 
     public MetaGrammar() { this("s", false); }
     public MetaGrammar(String s) { this(s, false); }