checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
index a5d7e1d..0b70878 100644 (file)
@@ -16,7 +16,7 @@ public class MetaGrammar extends ReflectiveWalker {
     }
 
     // FIXME
-    private static HashSet<Union> dropAll = new HashSet<Union>();
+    private static HashSet<Element> dropAll = new HashSet<Element>();
 
     // Statics //////////////////////////////////////////////////////////////////////////////
 
@@ -78,24 +78,14 @@ public class MetaGrammar extends ReflectiveWalker {
         }
         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 _dollar__dollar_(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 Object _percent__percent_(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 Object _star__star_(final Element r) { return new Rep(r, null, true, true); }
     public Object _plus__plus_(final Element r) { return new Rep(r, null, true, false); }
     public Element _question_(final Element r) { return Repeat.maybe(r); }
@@ -104,8 +94,14 @@ 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 Element  literal(String s)    { return CharToken.string(s); }
+    //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     range0(char a)         { return new Range(a, a); }
     public Range     range0(char a, char b) { return new Range(a, b); }
@@ -177,6 +173,7 @@ public class MetaGrammar extends ReflectiveWalker {
         g = new Union(str);
         startSymbol = str;
         nt = new HashMap<String,Union>();
+        dropAll = new HashSet<Element>();
         nt.put(str, g);
         this.dws = Repeat.maximal(Repeat.many0(nonTerminalY("w")));
         return ret;
@@ -366,168 +363,170 @@ 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, "sify", new Tree[] { new Tree(null, null, 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", 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, "r", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "a", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "m", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "m", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "a", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "r", 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, "s", new Tree[] { })})})})}),
-                                                                                                                                                                                                                                                                                                          new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "r", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "a", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "m", 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, "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, "w", 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, "r", new Tree[] { }),
-                                                                                                                                                                                                                              new Tree(null, "a", new Tree[] { }),
-                                                                                                                                                                                                                              new Tree(null, "m", new Tree[] { }),
-                                                                                                                                                                                                                              new Tree(null, "m", 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, "=>", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "s", new Tree[] { })})})})})}),
-                                                                                                                                                                                                                                                                                                          new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "r", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "a", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "m", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "m", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                new Tree(null, "a", 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, "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, "/", 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[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    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, ":", 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, "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, "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, "w", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  new Tree(null, "s", new Tree[] { })})})})})}),
-                                                                                                                                                                                                                                                                        new Tree(null, "rewrite", 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[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    new Tree(null, "r", 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, ":", 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, "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, "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, "w", 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, "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, "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, "(", 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, "w", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "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, "s", new Tree[] { })})})}),
-                                                                                                                                                                                                                                                                                                                                                                              new Tree(null, "(", 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, "w", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Tree(null, "s", 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, "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, "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, 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, "e", new Tree[] { }),
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                   new Tree(null, "s", 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, "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, "w", new Tree[] { }),
+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[] { })})}),
+        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, "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, "r", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "m", new Tree[] { }),
+        new Tree(null, "m", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "r", 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, "s", new Tree[] { })})})})}),
+        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "m", 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, "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, "w", 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, "r", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "m", new Tree[] { }),
+        new Tree(null, "m", 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, "=>", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})})}),
+        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "g", new Tree[] { }),
+        new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "m", new Tree[] { }),
+        new Tree(null, "m", new Tree[] { }),
+        new Tree(null, "a", 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, "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, "/", 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[] { }),
+        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, ":", 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, "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, "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, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})})}),
+        new Tree(null, "rewrite", 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[] { }),
+        new Tree(null, "r", 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, ":", 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, "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, "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, "w", 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, "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, "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, "(", 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, "w", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", 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, "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, "s", new Tree[] { })})})}),
+        new Tree(null, "(", 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, "w", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", 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, "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, "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, 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, "e", new Tree[] { }),
+        new Tree(null, "s", 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, "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, "w", new Tree[] { }),
         new Tree(null, "s", 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, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, 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, "(", 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, "w", 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, "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, 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, "(", 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, "w", 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, "s", new Tree[] { })})}),
@@ -563,7 +562,7 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "t", 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, "*/", 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, "w", 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, "w", new Tree[] { }),
@@ -577,7 +576,7 @@ public class MetaGrammar extends ReflectiveWalker {
         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, "*/", 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, "w", 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, "w", new Tree[] { }),
@@ -660,8 +659,7 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "p", 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[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "-", 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, "rangex", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "-", new Tree[] { })}),
         new Tree(null, "range0", new Tree[] { new Tree(null, "]", new Tree[] { })}),
         new Tree(null, "range0", new Tree[] { new Tree(null, "\\", new Tree[] { })}),
         new Tree(null, "range0", new Tree[] { new Tree(null, "~", new Tree[] { })})})})})}),
@@ -713,10 +711,8 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
         new Tree(null, "Y", new Tree[] { })})})}),
-        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "(", new Tree[] { })})})}),
-        new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, ")", new Tree[] { })})})})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "(", new Tree[] { })})})}),
+        new Tree(null, "range", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", 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, "p", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
@@ -767,14 +763,14 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "x", new Tree[] { })})})}),
         new Tree(null, "rewrite", 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, "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, "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, "w", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})})})})}),
         new Tree(null, "rewrite", 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, "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, "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, "w", new Tree[] { }),
         new Tree(null, "s", new Tree[] { })})})})})}),
@@ -877,15 +873,13 @@ public class MetaGrammar extends ReflectiveWalker {
         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, "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, "(", 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, "range", new Tree[] { new Tree(null, "~", new Tree[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\n", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "(", 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, "rangex", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\n", new Tree[] { })})})})})})})})})})}),
         new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\n", 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, "\n", 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, "\r", 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, "n", 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, null, new Tree[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "-", new Tree[] { new Tree(null, "a", 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, null, new Tree[] { new Tree(null, "-", new Tree[] { new Tree(null, "a", new Tree[] { }),
         new Tree(null, "z", new Tree[] { })}),
         new Tree(null, "-", new Tree[] { new Tree(null, "A", new Tree[] { }),
         new Tree(null, "Z", new Tree[] { })}),
@@ -909,8 +903,7 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "d", 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, "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, "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, "(", 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[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\"", new Tree[] { })}),
+        new Tree(null, "(", 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, "(", 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, "rangex", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "\"", new Tree[] { })}),
         new Tree(null, "range0", new Tree[] { new Tree(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, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
@@ -938,8 +931,7 @@ public class MetaGrammar extends ReflectiveWalker {
         new Tree(null, "r", new Tree[] { })})})})}),
         new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\r", 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, "range", new Tree[] { new Tree(null, "~", new Tree[] { }),
-        new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "n", new Tree[] { })}),
+        new Tree(null, "rangex", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range0", new Tree[] { new Tree(null, "n", new Tree[] { })}),
         new Tree(null, "range0", new Tree[] { new Tree(null, "r", new Tree[] { })})})})})})})})})})})}),
         new Tree(null, null, new Tree[] { })})
         // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED
@@ -958,3 +950,9 @@ public class MetaGrammar extends ReflectiveWalker {
 
 
 
+
+
+
+
+
+