checkpoint
authoradam <adam@megacz.com>
Thu, 15 Dec 2005 09:21:07 +0000 (04:21 -0500)
committeradam <adam@megacz.com>
Thu, 15 Dec 2005 09:21:07 +0000 (04:21 -0500)
darcs-hash:20051215092107-5007d-304eced870958ba45d2fd7d12fb8ed8c28845f38.gz

src/edu/berkeley/sbp/misc/MetaGrammar.java
tests/meta.g

index 7a98bb4..0c6d816 100644 (file)
@@ -104,26 +104,14 @@ public class MetaGrammar extends ReflectiveWalker {
 
     public Object   _plus_(final Element r)                    { return Repeat.many1(r); }
     public PreSequence rewrite(Object[] o)                     { return new PreSequence(o, null); }
 
     public Object   _plus_(final Element r)                    { return Repeat.many1(r); }
     public PreSequence rewrite(Object[] o)                     { return new PreSequence(o, null); }
-    public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); }
 
 
-    public PreSequence seqx(PreSequence p, String tag) {
+    public PreSequence seqx(PreSequence p, String tag) { return _equals__greater_(p, tag); }
+    public PreSequence _equals__greater_(PreSequence p, String tag) {
         p.tag = tag;
         return p;
     }
         p.tag = tag;
         return p;
     }
-    public PreSequence seq(Object[] o, Object sep, String tag) { return new PreSequence(sep==null ? o : slash(o, sep), tag); }
-    public Object[] seq(Object[] o)                            { return o; }
     public PreSequence ps(Object[] o) { return new PreSequence(o); }
     public PreSequence _slash_(PreSequence p, Object sep) { return p.sparse(sep); }
     public PreSequence ps(Object[] o) { return new PreSequence(o); }
     public PreSequence _slash_(PreSequence p, Object sep) { return p.sparse(sep); }
-    public Object[] slash(Object[] o, Object sep) {
-        if (o.length <= 1) return o;
-        Object[] ret = new Object[o.length * 2 - 1];
-        for(int i=0; i<o.length; i++) {
-            Object oi = o[i];
-            ret[i*2]   = oi;
-            if (i*2+1<ret.length) ret[i*2+1] = new MyDrop(sep);
-        }
-        return ret;
-    }
 
     public Object _plus__slash_(final Element r, Element s) { return Repeat.many1(r, s); }
     public Object _star__slash_(final Element r, Element s) { return Repeat.many0(r, s); }
 
     public Object _plus__slash_(final Element r, Element s) { return Repeat.many1(r, s); }
     public Object _star__slash_(final Element r, Element s) { return Repeat.many0(r, s); }
@@ -277,6 +265,7 @@ public class MetaGrammar extends ReflectiveWalker {
 
 
 
 
 
 
+
         // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED
 new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "grammar", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { })}),
         // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED
 new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "grammar", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { })}),
@@ -477,10 +466,14 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "e", new Tree[] { })}),
         new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
         new Tree(null, "e", new Tree[] { })}),
         new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "x", new Tree[] { })})})})}),
+        new Tree(null, null, new Tree[] { })}),
+        new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { }),
         new Tree(null, "x", new Tree[] { })})}),
         new Tree(null, "x", new Tree[] { })})}),
-        new Tree(null, "?", new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})}),
         new Tree(null, "s", new Tree[] { })})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
         new Tree(null, ">", new Tree[] { })})}),
         new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})}),
         new Tree(null, ">", new Tree[] { })})}),
         new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})}),
@@ -496,11 +489,7 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})})}),
         new Tree(null, null, new Tree[] { })})})})})})}),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})})}),
         new Tree(null, null, new Tree[] { })})})})})})}),
-        new Tree(null, null, new Tree[] { })})})})})})})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "q", new Tree[] { }),
-        new Tree(null, "x", new Tree[] { })})})})})}),
+        new Tree(null, null, new Tree[] { })})})})}),
         new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "c", new Tree[] { })}),
         new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[~", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "-", new Tree[] { })}),
         new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "c", new Tree[] { })}),
         new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[~", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "-", new Tree[] { })}),
@@ -786,3 +775,4 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
 
 
 
 
 
 
+
index a994e8d..cf6a6b3 100644 (file)
@@ -14,7 +14,7 @@ ps          ::= (e*/ ws) => "ps"
 psx         ::= ps
               | ps ws ^"/" e
 sequence    ::= psx
 psx         ::= ps
               | ps ws ^"/" e
 sequence    ::= psx
-                (ws "=>" ws (word|quoted))?              => "seqx"
+              | psx ^"=>" (word|quoted) /ws
 
 ec       ::= [~\-\]\\\~]
            | escaped
 
 ec       ::= [~\-\]\\\~]
            | escaped