checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
index a4ee08f..fe92f63 100644 (file)
@@ -28,11 +28,9 @@ public class MetaGrammar extends ReflectiveWalker {
     // MetaGrammar //////////////////////////////////////////////////////////////////////////////
 
     public Object      _star_(Element r)                                              { return new Rep(r, null, false, true); }
-    public Element     _leftbracket_(Object o, Object[] args)                         { return rangex(o==null || !(o instanceof Character) ? null : o, args); }
     public Union       _colon__colon__equals_(String s, PreSequence[][] p)            { return nonTerminalZ(s, p); }
     public Union       _bang__colon__colon__equals_(String s, PreSequence[][] p)      { return nonTerminalZ(s, p, true); }
     public Union       _colon__colon__equals_(boolean q, String s, PreSequence[][] p) { return nonTerminalZ(s, p, q); }
-    public Element     _leftparen__rightparen_()                                      { return epsilon; }
     public Element     epsilon(Object o, Object b)                                    { return epsilon; }
     public Element     _rightparen_(Object e)                                         { return SELF; }
 
@@ -47,13 +45,14 @@ public class MetaGrammar extends ReflectiveWalker {
 
     public Element     _bang_(Element r)                       { return r; }
     public Object      care(String s)                          { return new MyLift(s); }
+    public Object      _caret_(String s)                       { return new MyLift(s); }
+    public Object      _leftparen__rightparen_()               { return epsilon; }
     //public Element     _backtick_(Element r)                   { return new Unwrap(r); }
     //public Element     _hash_(Element e)                       { return e; }
     //public Element     _hash_(Element e)                       { return _plus__plus_(e); }
 
     public PreSequence[] alternatives(PreSequence[] s) { return s; }
         
-    public Range       _minus_(Character a, Character b)   { return b==null ? new Range(a.charValue(), true) : new Range(a.charValue(), b.charValue()); }
     public Object  _leftparen_(PreSequence[][] p) { return nonTerminalZ(p); }
     public Union       nonTerminalY(String s) { return nonTerminalX(s, false, false); }
     public Union nonTerminalX(String s, boolean synthetic, boolean dropAll) {
@@ -97,12 +96,13 @@ public class MetaGrammar extends ReflectiveWalker {
         //return e;
     }
 
-    public Range     range0(char a)         { return new Range(a, a); }
-    public Range     range0(char a, char b) { return new Range(a, b); }
-    public Range     range1(char a, char b) { return new Range(a, b); }
-    public Element   rangex(Range[] rr) { return range("~", rr); }
-    public Element   range(Range[] rr) { return range(null, rr); }
-    public Element   range(Object o, Range[] rr) {
+    public Range     range(char a)         { return new Range(a, a); }
+    public Range     _minus_(char a, char b) { return new Range(a, b); }
+    public Element   rangesx(Range[] rr) { return ranges("~", rr); }
+    public Element   ranges(Range[] rr) { return ranges(null, rr); }
+    public Element   _leftbracket_       (Range[] rr) { return ranges(null, rr); }
+    public Element   _leftbracket__tilde_(Range[] rr) { return ranges("~",  rr); }
+    public Element   ranges(Object o, Range[] rr) {
         Range.Set ret = !"~".equals(o+"") ? new Range.Set() : new Range.Set(new Range(true, true));
         if (rr != null)
             for(Range r : rr)
@@ -363,53 +363,59 @@ 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, "grammar", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { })}),
+        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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, "nonTerminalY", 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, "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, "m", new Tree[] { })})})})})})}),
+        new Tree(null, "!::=", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { })})})})})})})})})}),
+        new Tree(null, "::=", 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, 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, null, new Tree[] { new Tree(null, "r", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, "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, "r", new Tree[] { })})})})})})}),
+        new Tree(null, "::=", 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, 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, "d", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ":", new Tree[] { }),
         new Tree(null, ":", new Tree[] { }),
-        new Tree(null, "=", 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, "=", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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[] { }),
@@ -420,18 +426,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, 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[] { }),
-        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, "rewrite", new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", 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, "d", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { }),
         new Tree(null, ":", new Tree[] { }),
         new Tree(null, ":", 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, "=", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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[] { }),
@@ -442,10 +448,10 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "s", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, 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[] { }),
@@ -456,27 +462,27 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "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, 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, "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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ">", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, 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, "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, 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[] { }),
@@ -484,13 +490,13 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "|", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, "a", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
@@ -501,38 +507,38 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "s", new Tree[] { })})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "q", new Tree[] { }),
         new Tree(null, "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, "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, 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, 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, "s", new Tree[] { }),
+        new Tree(null, "nonTerminalY", 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, "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, "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, "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, "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, "c", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})})})})})})}),
+        new Tree(null, "::=", 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, 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, null, new Tree[] { new Tree(null, "w", new Tree[] { })})})})})})})})})})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "s", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, 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[] { }),
@@ -540,160 +546,153 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "s", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})})})}),
-        new Tree(null, "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, "r", new Tree[] { }),
+        new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "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, "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, "r", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { })})}),
+        new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, 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, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }),
-        new Tree(null, "~", new Tree[] { })})})}),
-        new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "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[] { }),
-        new Tree(null, "s", new Tree[] { })})})})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }),
+        new Tree(null, "~", new Tree[] { })})}),
+        new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", 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, "nonTerminalY", 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, "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, "r", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, "r", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "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, "s", new Tree[] { }),
+        new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
-        new Tree(null, ">", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
+        new Tree(null, ">", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, "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, "s", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
-        new Tree(null, ">", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
+        new Tree(null, ">", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "d", 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, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
-        new Tree(null, ">", new Tree[] { })})})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { }),
-        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, "w", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }),
+        new Tree(null, ">", new Tree[] { })})}),
+        new Tree(null, "literal", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        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, "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[] { })})})})})}),
-        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, "p", new Tree[] { })})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "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, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "-", new Tree[] { })}),
+        new Tree(null, "range", new Tree[] { new Tree(null, "]", new Tree[] { })}),
+        new Tree(null, "range", new Tree[] { new Tree(null, "\\", new Tree[] { })}),
+        new Tree(null, "range", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "p", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "d", new Tree[] { })})})})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "n", new Tree[] { }),
-        new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "c", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "0", new Tree[] { })})})}),
-        new Tree(null, "=>", new Tree[] { new Tree(null, 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, "e", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "c", 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, "c", 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, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "1", new Tree[] { })})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "c", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
+        new Tree(null, "c", new Tree[] { })})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, 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, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "n", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "n", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "T", new Tree[] { }),
@@ -704,18 +703,18 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         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, "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, "Y", new Tree[] { })})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "(", new Tree[] { })})})}),
+        new Tree(null, "[", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, ")", 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[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "l", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
-        new Tree(null, "n", new Tree[] { })})})}),
-        new Tree(null, "rewrite", new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "{", new Tree[] { })})})}),
-        new Tree(null, "nonTerminalY", 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, "rewrite", new Tree[] { new Tree(null, "/", 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, 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[] { }),
@@ -726,129 +725,109 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "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, 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "n", new Tree[] { }),
-        new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})})})})})})})})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "n", new Tree[] { }),
-        new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", 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, "(", 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, "r", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "}", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { })})}),
+        new Tree(null, "(", new Tree[] { new Tree(null, 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, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "g", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})})})})})})})})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})})})})})})})}),
+        new Tree(null, "literal", 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, "^", 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, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "n", new Tree[] { }),
         new Tree(null, "g", new Tree[] { }),
-        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, "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, "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, "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, "~", 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, "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, "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, "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, "/", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
+        new Tree(null, "e", new Tree[] { })})})})})})})})})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", new Tree[] { })})})})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, "/", 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, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "d", 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, "d", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, "c", new Tree[] { }),
-        new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "r", new Tree[] { }),
-        new Tree(null, "e", new Tree[] { })})})}),
-        new Tree(null, "rewrite", new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "care", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "`", new Tree[] { })})})}),
-        new Tree(null, "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, "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, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
+        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, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "~", new Tree[] { }),
+        new Tree(null, "/", new Tree[] { }),
+        new Tree(null, "~", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "`", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, 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, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "*", new Tree[] { }),
+        new Tree(null, "*", new Tree[] { })})})})})})}),
+        new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(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, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }),
+        new Tree(null, "/", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, 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, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "+", new Tree[] { }),
+        new Tree(null, "+", new Tree[] { })})})})})})}),
+        new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(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, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }),
+        new Tree(null, "/", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})})})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "d", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "l", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "l", new Tree[] { }),
         new Tree(null, "i", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
         new Tree(null, "r", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
-        new Tree(null, "l", new Tree[] { })})})}),
-        new Tree(null, "rewrite", new Tree[] { new Tree(null, 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, "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, "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, "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, "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, "rewrite", new Tree[] { new Tree(null, 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, "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, "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, "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, "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, "rewrite", 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, "nonTerminalY", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "l", new Tree[] { })})}),
+        new Tree(null, "rewrite", new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})}),
+        new Tree(null, "nonTerminalY", 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, "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, "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, "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, "a", new Tree[] { }),
+        new Tree(null, "d", new Tree[] { })})}),
+        new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", 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, "/", 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, 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[] { }),
@@ -859,74 +838,69 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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, "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, "w", new Tree[] { })})}),
-        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, " ", new Tree[] { })})})})})}),
-        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, "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, "-", new Tree[] { new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "s", new Tree[] { })})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})}),
+        new Tree(null, "nonTerminalY", 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, null, new Tree[] { new Tree(null, "w", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, 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, 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, "[~", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "\n", new Tree[] { })})})})})})})})})})}),
+        new Tree(null, "literal", 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, 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, null, new Tree[] { new Tree(null, "\r", new Tree[] { })})})})})})})})}),
+        new Tree(null, "::=", 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, "[", 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[] { })}),
         new Tree(null, "-", new Tree[] { new Tree(null, "0", new Tree[] { }),
         new Tree(null, "9", new Tree[] { })}),
-        new Tree(null, "range0", new Tree[] { new Tree(null, "_", new Tree[] { })})})})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }),
+        new Tree(null, "range", new Tree[] { new Tree(null, "_", new Tree[] { })})})})})})})})})}),
+        new Tree(null, "::=", 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, 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, "a", new Tree[] { }),
-        new Tree(null, "n", new Tree[] { })})})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "i", new Tree[] { }),
-        new Tree(null, "f", new Tree[] { }),
-        new Tree(null, "y", new Tree[] { })})})})})})})}),
-        new Tree(null, "::=", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", 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, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "++", new Tree[] { new Tree(null, "nonTerminalY", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { })})})})})})})})})}),
+        new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }),
         new Tree(null, "u", new Tree[] { }),
         new Tree(null, "o", new Tree[] { }),
         new Tree(null, "t", new Tree[] { }),
         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, "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, "d", new Tree[] { })}),
+        new Tree(null, null, new Tree[] { new Tree(null, "alternatives", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "rewrite", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, 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, "[~", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "\"", new Tree[] { })}),
+        new Tree(null, "range", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "p", new Tree[] { }),
         new Tree(null, "e", new Tree[] { }),
-        new Tree(null, "d", new Tree[] { })})})})})})})})})})})})})})})})}),
-        new Tree(null, "literal", new Tree[] { new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\"", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }),
-        new Tree(null, "i", new Tree[] { }),
-        new Tree(null, "f", new Tree[] { }),
-        new Tree(null, "y", 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, "d", new Tree[] { })})})})})})})})})})})})})})})}),
+        new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\"", new Tree[] { })})})})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", 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, null, new Tree[] { new Tree(null, "e", new Tree[] { }),
         new Tree(null, "s", new Tree[] { }),
         new Tree(null, "c", new Tree[] { }),
         new Tree(null, "a", new Tree[] { }),
         new Tree(null, "p", new Tree[] { }),
         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, "n", new Tree[] { })})})})}),
-        new Tree(null, "sify", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\n", 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, "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, "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, "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, null, new Tree[] { new Tree(null, "\\", new Tree[] { }),
+        new Tree(null, "n", new Tree[] { })})})}),
+        new Tree(null, null, new Tree[] { new Tree(null, "\n", new Tree[] { })})}),
+        new Tree(null, "=>", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "\\", new Tree[] { }),
+        new Tree(null, "r", 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, null, 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, "n", new Tree[] { })}),
+        new Tree(null, "range", new Tree[] { new Tree(null, "r", new Tree[] { })})})})})})})})})})})}),
         new Tree(null, null, new Tree[] { })})
         // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED
         ;
@@ -951,3 +925,9 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }),
 
 
 
+
+
+
+
+
+