checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
index bfddf72..0f75ecd 100644 (file)
@@ -72,11 +72,26 @@ public class MetaGrammar extends ReflectiveWalker {
         public Object  _backslash__leftbrace_(String s)      { return SELF; }
         public Object  _leftbrace_(String s)                 { return SELF; }
         public Object _plus_(final Element r) { return new Rep(r, null, false, false); }
+    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];
+            //if (oi instanceof Rep) oi = ((Rep)oi).build(new MyDrop(sep));
+            ret[i*2]   = oi;
+            if (i*2+1<ret.length) ret[i*2+1] = new MyDrop(sep);
+        }
+        return ret;
+    }
     //public Element _tilde__slash__tilde_(final Element r) { return Repeat.maximal(r); }
     public Object _plus__slash_(final Element r, Object s) {
         if (s instanceof String) s = CharToken.string((String)s);
         return new Rep(r, (Element)s, false, false);
     }
+    public Object _star__slash_(final Element r, Object s) {
+        if (s instanceof String) s = CharToken.string((String)s);
+        return new Rep(r, (Element)s, false, true);
+    }
     //public Element _star__slash_(final Element r, Element s) { return Repeat.many0(r, s); }
     //public Element _star__star_(final Element r, Element s) { return Repeat.maximal(Repeat.many0(r, s)); }
     public Object _plus__plus_(final Element r) { return new Rep(r, null, true, false); }
@@ -238,13 +253,15 @@ public class MetaGrammar extends ReflectiveWalker {
                 drops = new boolean[o.length];
                 int j = 0;
                 for(int i=0; i<o.length; i++) {
-                    if      (o[i] instanceof PreSequence) o2[j] = ((PreSequence)o[i]).buildUnion(ws);
-                    else if (o[i]==SELF)                  o2[j] = u.new Subset("(("+u+"))", set);
-                    else if (o[i] instanceof MyLift)      { o2[j] = CharToken.string(tag = ((MyLift)o[i]).s); drops[j] = true; }
-                    else if (o[i] instanceof String)      { o2[j] = CharToken.string(      ((String)o[i])  ); drops[j] = true; }
-                    else if (o[i] instanceof Rep)         o2[j] = ((Rep)o[i]).build(ws);
-                    //else if (o[i] instanceof PreBrace)    o2[j]
-                    else                                  o2[j] = (Element)o[i];
+                    Object oi = o[i];
+                    if (oi instanceof MyDrop)      { oi = ((MyDrop)oi).o; drops[j] = true; }
+                    if      (oi instanceof PreSequence) o2[j] = ((PreSequence)oi).buildUnion(ws);
+                    else if (oi==SELF)                  o2[j] = u.new Subset("(("+u+"))", set);
+                    else if (oi instanceof MyLift)      { o2[j] = CharToken.string(tag = ((MyLift)oi).s); drops[j] = true; }
+                    else if (oi instanceof String)      { o2[j] = CharToken.string(      ((String)oi)  ); drops[j] = true; }
+                    else if (oi instanceof Rep)         o2[j] = ((Rep)oi).build(ws);
+                    //else if (oi instanceof PreBrace)    o2[j]
+                    else                                  o2[j] = (Element)oi;
 
                     if (dropAll.contains(o2[j])) drops[j] = true;
 
@@ -343,12 +360,17 @@ public class MetaGrammar extends ReflectiveWalker {
         public final String s;
         public MyLift(String s) { this.s = s; }
     }
+    public static class MyDrop {
+        public final Object o;
+        public MyDrop(Object o) { this.o = o; }
+    }
 
     private static final Tree meta =
 
 
 
 
+
         // 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, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { })})}),
@@ -388,13 +410,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ":", new Tree[] { }),
         new Tree(null, ":", new Tree[] { }),
         new Tree(null, "=", new Tree[] { })})})}),
-        new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { })})})})})})}),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "v", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})})}),
         new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
@@ -403,13 +430,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, ":", new Tree[] { }),
         new Tree(null, ":", new Tree[] { }),
         new Tree(null, "=", new Tree[] { })})})}),
-        new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "v", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})})})})})})}),
         new Tree(null, "::=", new Tree[] { new Tree(null, "sify", 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, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "~", new Tree[] { }),
@@ -424,21 +456,43 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "p", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "v", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { }),
+        new Tree(null, "q", new Tree[] { }),
+        new Tree(null, "u", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "A", new Tree[] { }),
+        new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { })})})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ">", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { }),
+        new Tree(null, "q", new Tree[] { }),
+        new Tree(null, "u", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "A", new Tree[] { }),
+        new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { })})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "o", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "j", new Tree[] { }),
+        new Tree(null, "u", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "b", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "r", new Tree[] { })})})})})}),
+        new Tree(null, "s", new Tree[] { })})})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "|", new Tree[] { })})})})})}),
         new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
@@ -451,51 +505,82 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "v", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
+        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "S", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "w", new Tree[] { }),
-        new Tree(null, "r", new Tree[] { }),
-        new Tree(null, "i", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "q", new Tree[] { }),
+        new Tree(null, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
         new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}),
+        new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})})}),
+        new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "o", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "j", new Tree[] { }),
+        new Tree(null, "u", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
         new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "x", new Tree[] { })})})})})}),
+        new Tree(null, "e", new Tree[] { })})})})})}),
         new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "x", new Tree[] { })})})}),
+        new Tree(null, "e", new Tree[] { })})})}),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { })})})}),
-        new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})})})}),
         new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "x", new Tree[] { })})})}),
+        new Tree(null, "e", new Tree[] { })})})}),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }),
         new Tree(null, "~", new Tree[] { })})})}),
-        new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})})})})})})})}),
         new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "R", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "x", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})})}),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})})}),
         new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
@@ -503,14 +588,28 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})}),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
         new Tree(null, ">", new Tree[] { })})})}),
         new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})})})}),
-        new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})}),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
         new Tree(null, ">", new Tree[] { })})})}),
         new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
@@ -519,7 +618,14 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})})})}),
-        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})})})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "u", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})}),
         new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
         new Tree(null, ">", new Tree[] { })})})}),
         new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { }),
@@ -552,13 +658,6 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "g", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "0", new Tree[] { })})})})})})})}),
-        new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ">", new Tree[] { })})})})})})})})})}),
-        new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "b", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "r", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "|", new Tree[] { })})})})})})})})})}),
         new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "E", new Tree[] { })})}),
         new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
@@ -588,13 +687,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "n", new Tree[] { })})})}),
         new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "{", new Tree[] { })})})}),
-        new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "v", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { })})})})}),
         new Tree(null, "literal", new Tree[] { new Tree(null, "sify", 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, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { })})})}),
         new Tree(null, "?", new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }),
@@ -674,13 +778,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "d", new Tree[] { })})})}),
         new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})})})})})}),
         new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})})}),
-        new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "C", new Tree[] { }),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "t", new Tree[] { }),
+        new Tree(null, "i", new Tree[] { }),
+        new Tree(null, "v", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "t", new Tree[] { })})})})}),
         new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})})})})})})})}),
         new Tree(null, "!::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { })})}),
         new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, " ", new Tree[] { })})})})})}),
@@ -760,3 +869,4 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
 
 
 
+