checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
index 1c563e8..cb1510a 100644 (file)
@@ -35,11 +35,11 @@ public class MetaGrammar extends ReflectiveWalker {
     public Element     _rightparen_(Object e)                                         { return SELF; }
 
     public PreSequence _amp_(PreSequence p, Object[] o) {
-        p.needs.add(new PreSequence(o, null, true).buildSequence(null, true, false));
+        p.and.add(new PreSequence(o, null, true).buildSequence(null, true, false));
         return p;
     }
     public PreSequence _amp__tilde_(PreSequence p, Object[] o) {
-        p.hates.add(new PreSequence(o, null, true).buildSequence(null, true, false));
+        p.not.add(new PreSequence(o, null, true).buildSequence(null, true, false));
         return p;
     }
 
@@ -87,21 +87,11 @@ public class MetaGrammar extends ReflectiveWalker {
     public MetaGrammar grammar(Object o, Union[] u, Object x) { return this; }
     public char    _backslash_n() { return '\n'; }
     public char    _backslash_r() { return '\r'; }
-    //public String  literal(String s) { return s; }
-
-    public Object literal(String s) {
-        Element e = CharToken.string(s);
-        return new MyDrop(e);
-        //dropAll.add(e);
-        //return e;
-    }
-
-    public Range     range(char a)         { return new Range(a, a); }
+    public Object literal(String s) { return new MyDrop(CharToken.string(s)); }
     public Range     _minus_(char a, char b) { return new Range(a, b); }
-    public Element   rangesx(Range[] rr) { return ranges("~", rr); }
-    public Element   ranges(Range[] rr) { return ranges(null, rr); }
     public Element   _leftbracket_       (Range[] rr) { return ranges(null, rr); }
     public Element   _leftbracket__tilde_(Range[] rr) { return ranges("~",  rr); }
+    public Range     range(char a)         { return new Range(a, a); }
     public Element   ranges(Object o, Range[] rr) {
         Range.Set ret = !"~".equals(o+"") ? new Range.Set() : new Range.Set(new Range(true, true));
         if (rr != null)
@@ -110,21 +100,6 @@ public class MetaGrammar extends ReflectiveWalker {
                 else                   ret.remove(r);
         return CharToken.set(ret);
     }
-    public Element rangex(Object o, Object[] r) {
-        Range.Set ret = o==null ? new Range.Set() : new Range.Set(new Range(true, true));
-        if (r != null)
-            for(Object aa : r) {
-                Range range =
-                    aa instanceof Range
-                    ? (Range)aa
-                    : aa instanceof Character
-                    ? new Range(((Character)aa).charValue())
-                    : new Range(((String)aa).charAt(0));
-                if (o==null) ret.add(range);
-                else         ret.remove(range);
-            }
-        return CharToken.set(ret);
-    }
 
 
     ////////////////////////////////////////////////////////////////////////////////
@@ -157,7 +132,7 @@ public class MetaGrammar extends ReflectiveWalker {
             if (s[i]==null) continue;
             HashSet<Sequence> temp = new HashSet<Sequence>();
             for(PreSequence pre : s[i]) {
-                pre.hates.addAll(seqs);
+                pre.not.addAll(seqs);
                 Sequence seq = pre.buildSequence(n, false, dropAll);
                 temp.add(seq);
                 n.add(seq);
@@ -172,11 +147,6 @@ public class MetaGrammar extends ReflectiveWalker {
     public char unescape(char c) { return StringUtil.unescapify("\\"+c).charAt(0); }
     public PreSequence sequence(Object[] o) { return new PreSequence(o, null); }
 
-    public static class PreBrace {
-        public final Object[] o;
-        public PreBrace(Object[] o) { this.o = o; }
-    }
-
     public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); }
     public PreSequence wrap(Object[] o) { return new PreSequence(o, ""); }
     public PreSequence mwrap(Object[] o) { return new PreSequence(o, ""); }
@@ -188,6 +158,11 @@ public class MetaGrammar extends ReflectiveWalker {
         return rewrite(o3);
     }
         
+    public static class PreBrace {
+        public final Object[] o;
+        public PreBrace(Object[] o) { this.o = o; }
+    }
+
     public static class Rep {
         private final Element e;
         private final Element s;
@@ -202,8 +177,8 @@ public class MetaGrammar extends ReflectiveWalker {
     }
 
     public static class PreSequence {
-        public final HashSet<Sequence> needs  = new HashSet<Sequence>();
-        public final HashSet<Sequence> hates  = new HashSet<Sequence>();
+        public final HashSet<Sequence> and  = new HashSet<Sequence>();
+        public final HashSet<Sequence> not  = new HashSet<Sequence>();
         public /*final*/ String tag;
         public final Object[] o;
         public final boolean keeper;
@@ -239,8 +214,6 @@ public class MetaGrammar extends ReflectiveWalker {
         }
         public Sequence buildSequence(Union u) { return buildSequence(u, false, false); }
         public Sequence buildSequence(Union u, boolean lame, boolean dropAll) {
-            HashSet<Sequence> and = needs;
-            HashSet<Sequence> not = hates;
             for(Sequence s : and) u.add(s);
             for(Sequence s : not) u.add(s);
             HashSet<Sequence> set = new HashSet<Sequence>();