checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
1 package edu.berkeley.sbp.misc;
2 import edu.berkeley.sbp.util.*;
3 import edu.berkeley.sbp.*;
4 import edu.berkeley.sbp.chr.*;
5 import java.util.*;
6 import java.io.*;
7
8 public class MetaGrammar extends StringWalker {
9
10     public static Object repeatTag = null;
11
12     /** an atom which tracks the possible tokenset of some element, provided that element can only match single-token sequences */
13     public static class Infer<T extends Input> extends Atom<T> {
14         private final Element e;
15         public Infer(Element e) { this.e = e; }
16         public Topology<T> top() { return (Topology<T>)toAtom(e); }
17         public String toString() { return e.toString(); }
18     }
19
20     /** an atom which tracks the inverse of some other atom */
21     public static class Invert<T extends Input> extends Atom<T> {
22         private final Atom<T> a;
23         public Invert(Atom<T> a) { this.a = a; }
24         public Topology<T> top() { return a.complement(); }
25         public String toString() { return "~"+a; }
26     }
27
28     public static class Hack<T extends Input> extends Atom<T> {
29         private final Atom<T> a;
30         static final Topology leftright = CharRange.rightBrace.union(CharRange.leftBrace);
31         public Hack(Atom<T> a) { this.a = a; }
32         public Topology<T> top() { return a.minus(leftright); }
33         public String toString() { return a.toString(); }
34     }
35
36     public static Union make() throws Exception {
37         Meta.MetaGrammarFile mgf = new MetaGrammar.Meta.MetaGrammarFile(meta);
38         BuildContext bc = new BuildContext(mgf);
39         return mgf.get("s").build(bc);
40     }
41     public String toString() {
42         StringBuffer ret = new StringBuffer();
43         for(Union u : nt.values()) u.toString(ret);
44         return ret.toString();
45     }
46
47     public /*private*/ static HashSet<Element> dropAll = new HashSet<Element>();
48     public /*private*/ static HashMap<Element,String> carets = new HashMap<Element,String>();
49
50     // Statics //////////////////////////////////////////////////////////////////////////////
51
52     private static final Union SELF = new Union("()");
53
54     ////////////////////////////////////////////////////////////////////////////////
55
56     private Union g;
57     private HashMap<String,Union> nt;
58     private int anon = 0;
59     private String startSymbol;
60     private static boolean strings;
61
62     private static Element  set(Range.Set r) { if (strings) throw new Error(); return CharRange.set(r); }
63     private static Element  string(String s) { return strings ? StringInput.string(s) : CharRange.string(s); }
64     private static Atom     leftBrace()      { return strings ? StringInput.leftBrace : CharRange.leftBrace; }
65     private static Atom     rightBrace()     { return strings ? StringInput.rightBrace : CharRange.rightBrace; }
66
67     public MetaGrammar() { this("s", false); }
68     public MetaGrammar(String s) { this(s, false); }
69     public MetaGrammar(String s, boolean strings) { this.strings = strings; done(s); throw new Error(); }
70     public Union done() { return done("s"); }
71     public Union done(String str) {
72         Union ret = g;
73         g = new Union(str);
74         startSymbol = str;
75         nt = new HashMap<String,Union>();
76         dropAll = new HashSet<Element>();
77         dropAll.add(leftBrace());
78         dropAll.add(rightBrace());
79         nt.put(str, g);
80         return ret;
81     }
82
83
84     // MetaGrammar //////////////////////////////////////////////////////////////////////////////
85
86     public Union       getNonTerminal(String str) { return nonTerminal(str, null, false, false); }
87     private Union       nonTerminal(String str) { return nonTerminal(str, null, false, false); }
88     public Union       anonymousNonTerminal(Sequence[][] s) {
89         return nonTerminal("anon"+(anon++), s, false, false);
90     }
91     private Union       nonTerminal(String str, Sequence[][] s, boolean synthetic, boolean dropAll) {
92         Union n = str.equals(startSymbol) ? g : nt.get(str);
93         if (n == null) nt.put(str, n = new Union(str, synthetic));
94         if (dropAll) this.dropAll.add(n);
95         if (s==null) return n;
96         HashSet<Sequence> seqs = new HashSet<Sequence>();
97         for(int i=0; i<s.length; i++) {
98             if (s[i]==null) continue;
99             HashSet<Sequence> temp = new HashSet<Sequence>();
100             for(Sequence pre : s[i]) {
101                 for(Sequence sn : seqs) pre = pre.not(sn);
102                 temp.add(pre);
103                 n.add(pre);
104             }
105             seqs.addAll(temp);
106         }
107         //StringBuffer sb = new StringBuffer();
108         //n.toString(sb);
109         //System.out.println(sb);
110         return n;
111     }
112
113     public static String string(Iterable<Tree<String>> children) {
114         String ret = "";
115         for(Tree<String> t : children) ret += string(t);
116         return ret;
117     }
118     public static String string(Tree<String> tree) {
119         String ret = "";
120         if (tree.head()!=null) ret += tree.head();
121         ret += string(tree.children());
122         return ret;
123     }
124
125     // hack, this doens't really work if you're nesting
126     HashSet<Element> keep = new HashSet<Element>();
127
128     public Sequence sequence(Object o, boolean lame) {
129         return new PreSequence((Element[])Reflection.lub((Object[])o), null).buildSequence(null, lame, false);
130     }
131
132     public static class BuildContext extends HashMap<String,Union> {
133         private final Meta.MetaGrammarFile mgf;
134         public BuildContext(Meta.MetaGrammarFile mgf) { this.mgf = mgf; }
135         public Union build(String s) {
136             Union ret = get(s);
137             if (ret != null) return ret;
138             return mgf.get(s).build(this);
139         }
140     }
141
142     public static class Meta {
143         public static class MetaGrammarFile extends HashMap<String,MetaNonterminal> {
144             public MetaGrammarFile(Tree<String> tree) {
145                 if (!tree.head().equals("grammar")) throw new Error();
146                 for(Tree<String> nt : tree.child(0))
147                     add(new MetaNonterminal(nt));
148             }
149             private void add(MetaNonterminal mnt) {
150                 this.put(mnt.name, mnt);
151             }
152             public String toString() {
153                 String ret = "";
154                 for(MetaNonterminal mnt : this.values()) ret += mnt + "\n";
155                 return ret;
156             }
157         }
158         public static class MetaNonterminal {
159             public String    name;
160             public MetaUnion rhs;
161             public MetaNonterminal(Tree<String> tree) {
162                 System.err.println("MetaNonterminal("+tree+")");
163                 name = string(tree.child(0));
164                 rhs = rhs(tree.child(1));
165             }
166             public String toString() { return name + " = " + rhs; }
167             public Union build(BuildContext bc) { return rhs.build(bc, name); }
168         }
169         public static MetaUnion rhs(Tree<String> t) {
170             return t.numChildren()==1
171                 ? new MetaUnion(t.child(0), false)
172                 : new MetaUnion(t, true);
173         }
174         public static class MetaUnion implements MetaSequence {
175             public boolean prioritized;
176             public MetaSequence[] sequences;
177             public Sequence buildSequence(BuildContext bc) {
178                 return Sequence.singleton(new Element[] { buildAnon(bc) }, 0);
179             }
180             public Union buildAnon(BuildContext bc) {
181                 String s = "";
182                 for(int i=0; i<sequences.length; i++)
183                     s += (i>0?"\n                "+(prioritized?">":"|")+" ":"")+sequences[i].buildSequence(bc);
184                 return build(bc, s);
185             }
186             public Union build(BuildContext bc, String name) {
187                 Union u = bc.get(name);
188                 if (u != null) return u;
189                 u = new Union(name);
190                 bc.put(name, u);
191                 HashSet<Sequence> seqs = new HashSet<Sequence>();
192                 for(MetaSequence s : sequences) {
193                     Sequence seq = s.buildSequence(bc);
194                     if (seq != null) {
195                         Sequence oseq = seq;
196                         if (prioritized)
197                             for(Sequence seqprev : seqs)
198                                 seq = seq.not(seqprev);
199                         u.add(seq);
200                         seqs.add(oseq);
201                     }
202                 }
203                 return u;
204             }
205             public MetaUnion(Tree<String> t, boolean prioritized) {
206                 System.err.println("MetaUnion("+t+")");
207                 //System.err.println("metaunion: " + t);
208                 this.prioritized = prioritized;
209                 int i = 0;
210                 this.sequences = new MetaSequence[t.numChildren()];
211                 for(Tree<String> tt : t)
212                     sequences[i++] = prioritized
213                         ? new MetaUnion(tt, false)
214                         : makeMetaSequence(tt);
215             }
216             public String toString() {
217                 String ret = "\n     ";
218                 for(int i=0; i<sequences.length; i++) {
219                     ret += sequences[i];
220                     if (i<sequences.length-1)
221                         ret += (prioritized ? "\n    > " : "\n    | ");
222                 }
223                 return ret;
224             }
225         }
226
227         public interface MetaSequence {
228             public abstract Sequence buildSequence(BuildContext bc);
229         }
230
231         public static MetaSequence makeMetaSequence(Tree<String> t) {
232             System.err.println("MetaSequence("+t+")");
233             if ("psx".equals(t.head())) return MetaConjunct.make(t.child(0));
234             if (t.head().equals("&"))  return new MetaAnd(makeMetaSequence(t.child(0)), MetaConjunct.make(t.child(1)), false);
235             if (t.head().equals("&~")) return new MetaAnd(makeMetaSequence(t.child(0)), MetaConjunct.make(t.child(1)), true);
236             return null;
237         }
238
239         public static class MetaAnd implements MetaSequence {
240             boolean not;
241             MetaSequence left;
242             MetaSequence right;
243             public Sequence buildSequence(BuildContext bc) {
244                 Sequence ret = left.buildSequence(bc);
245                 if (not) ret.not(right.buildSequence(bc)); else ret.and(right.buildSequence(bc));
246                 return ret;
247             }
248             public MetaAnd(MetaSequence left, MetaSequence right, boolean not) {
249                 this.left = left;
250                 this.right = right;
251                 this.not = not;
252             }
253             public String toString() { return left + " &"+(not?"~":"")+" " /* FIXME */; }
254         }
255
256         public static class MetaConjunct implements MetaSequence {
257             public boolean negated = false;
258             public MetaClause[] elements;
259             public MetaClause followedBy = null;
260             public String tag;
261             public MetaClause separator;
262             public Sequence buildSequence(BuildContext bc) {
263                 Element[] els = new Element[elements.length + (separator==null?0:(elements.length-1))];
264                 boolean[] drops = new boolean[elements.length + (separator==null?0:(elements.length-1))];
265                 boolean unwrap = false;
266                 boolean dropAll = false;
267                 if (tag!=null && tag.equals("[]")) unwrap = true;
268                 if (tag!=null && "()".equals(tag)) dropAll=true;
269                 for(int i=0; i<elements.length; i++) {
270                     int j = separator==null ? i : i*2;
271                     els[j] = elements[i].build(bc);
272                     drops[j] = elements[i].drop;
273                     if (separator!=null && i<elements.length-1) {
274                         els[j+1] = separator.build(bc);
275                         drops[j+1] = true;
276                     }
277                 }
278                 Sequence ret = null;
279                 if (dropAll)     ret = Sequence.drop(els, false);
280                 else if (unwrap) ret = Sequence.unwrap(els, /*repeatTag FIXME*/null, drops);
281                 else if (tag!=null) ret = Sequence.rewritingSequence(tag, els, new Object[els.length], drops);
282                 else {
283                     int idx = -1;
284                     for(int i=0; i<els.length; i++)
285                         if (!drops[i])
286                             if (idx==-1) idx = i;
287                             else throw new Error("multiple non-dropped elements in sequence: " + Sequence.drop(els,false));
288                     if (idx != -1) ret = Sequence.singleton(els, idx);
289                     else           ret = Sequence.drop(els, false);
290                 }
291                 if (this.followedBy != null) ret.follow = new Hack(new Infer(this.followedBy.build(bc)));
292                 return ret;
293             }
294             private MetaConjunct(Tree<String> t) {
295                 System.err.println("MetaConjunct("+t+")");
296                 elements = new MetaClause[t.numChildren()];
297                 int i = 0; for(Tree<String> tt : t)
298                     elements[i++] = MetaClause.make(tt, this);
299             }
300             public String toString() {
301                 String ret = (tag==null ? "" : (tag+":: ")) + (negated ? "~" : "");
302                 if (elements.length > 1) ret += "(";
303                 for(MetaClause mc : elements) ret += (" " + mc + " ");
304                 if (separator != null) ret += " /" + separator;
305                 if (followedBy != null) ret += " -> " + followedBy;
306                 if (elements.length > 1) ret += ")";
307                 return ret;
308             }
309             public static MetaConjunct make(Tree<String> t) {
310                 System.err.println("MetaConjunct.make("+t+")");
311                 if ("/".equals(t.head())) {
312                     MetaConjunct ret = make(t.child(0));
313                     ret.separator = MetaClause.make(t.child(1), ret);
314                     return ret;
315                 }
316                 if ("->".equals(t.head())) {
317                     MetaConjunct ret = make(t.child(0));
318                     ret.followedBy = MetaClause.make(t.child(1), ret);
319                     return ret;
320                 }
321                 if ("::".equals(t.head())) {
322                     MetaConjunct ret = make(t.child(1));
323                     ret.tag = string(t.child(0));
324                     return ret;
325                 }
326                 if ("ps".equals(t.head())) {
327                     return new MetaConjunct(t.child(0));
328                 }
329                 return new MetaConjunct(t);
330             }
331         }
332
333         public static abstract class MetaClause {
334             public String label = null;
335             public boolean drop = false;
336             public boolean lift = false;
337             public abstract Element build(BuildContext bc);
338             public static MetaClause make(Tree<String> t, MetaConjunct c) {
339                 System.err.println("MetaClause.make("+t+")");
340                 if (t.head().equals("{")) throw new Error("metatree: " + t);
341                 if (t.head().equals("*")) return new MetaRepeat(make(t.child(0), c), false, null, true, true);
342                 if (t.head().equals("+")) return new MetaRepeat(make(t.child(0), c), false, null, false, true);
343                 if (t.head().equals("?")) return new MetaRepeat(make(t.child(0), c), false, null, true, false);
344                 if (t.head().equals("**")) return new MetaRepeat(make(t.child(0), c), true, null, true, true);
345                 if (t.head().equals("++")) return new MetaRepeat(make(t.child(0), c), true, null, false, true);
346                 if (t.head().equals("*/")) return new MetaRepeat(make(t.child(0), c), false, make(t.child(1), c), true, true);
347                 if (t.head().equals("+/")) return new MetaRepeat(make(t.child(0), c), false, make(t.child(1), c), false, true);
348                 if (t.head().equals("**/")) return new MetaRepeat(make(t.child(0), c), true, make(t.child(1), c), true, true);
349                 if (t.head().equals("++/")) return new MetaRepeat(make(t.child(0), c), true, make(t.child(1), c), false, true);
350                 if (t.head().equals("()")) return new MetaEpsilon();
351                 if (t.head().equals("[")) return new MetaRange(t.child(0));
352                 if (t.head().equals("literal")) return new MetaStringLiteral(t.child(0));
353                 if (t.head().equals("nonTerminal")) return new MetaNonterminalReference(t.child(0));
354                 if (t.head().equals(")")) return new MetaSelfReference();
355                 if (t.head().equals("(")) return new MetaParens(t.child(0));
356                 if (t.head().equals("~")) return new MetaInvert(t.child(0), c);
357                 if (t.head().equals("!")) { MetaClause mc = make(t.child(0), c); mc.drop = true; return mc; }
358                 if (t.head().equals("^")) { c.tag = string(t.child(0)); return new MetaStringLiteral(t.child(0)); }
359                 if (t.head().equals("^^")) throw new Error("carets: " + t);
360                 throw new Error("unknown: " + t);
361             }
362             public static class MetaRepeat extends MetaClause {
363                 public MetaClause element, separator;
364                 public boolean maximal, zero, many;
365                 public Element build(BuildContext bc) {
366                     return new Repeat(element.build(bc), zero, many, separator==null?null:separator.build(bc), maximal);
367                 }
368                 public MetaRepeat(MetaClause element, boolean maximal, MetaClause separator, boolean zero, boolean many) {
369                     this.separator = separator;
370                     this.element = element;
371                     this.maximal = maximal;
372                     this.zero = zero;
373                     this.many = many;
374                 }
375                 public String toString() {
376                     return element+
377                         ((zero&&!many)?"?":zero?"*":"+")+
378                         (!maximal?"":zero?"*":"+")+
379                         (separator==null?"":(" /"+separator));
380                 }
381             }
382             public static class MetaParens extends MetaClause {
383                 public MetaUnion body;
384                 public MetaParens(Tree<String> t) { this.body = rhs(t); }
385                 public String toString() { return "( " + body + " )"; }
386                 public Element build(BuildContext bc) { return body.buildAnon(bc); }
387             }
388             /*
389             public static class MetaTree extends MetaClause {
390                 public MetaConjunct body;
391                 public MetaTree(Tree<String> t) { this.body = MetaConjunct.make(t); }
392                 public String toString() { return "{ " + body + " }"; }
393                 public Element build(BuildContext bc) {
394                     return new Union("{}");// body.buildSequence();
395                 }
396             }
397             */
398             public static class MetaEpsilon extends MetaClause {
399                 public String toString() { return "()"; }
400                 public Element build(BuildContext bc) { return Union.epsilon; }
401             }
402             public static class MetaRange extends MetaClause {
403                 Range.Set range = new Range.Set();
404                 public String toString() { return range.toString(); }
405                 public Element build(BuildContext bc) { return set(range); }
406                 public MetaRange(Tree<String> t) {
407                     for(Tree<String> tt : t) {
408                         if (tt.head().equals("range")) {
409                             range.add(tt.child(0).head().charAt(0));
410                         } else if (tt.head().equals("-")) {
411                             range.add(new Range(string(tt.child(0)).charAt(0),
412                                                 string(tt.child(1)).charAt(0)));
413                         }
414                     }
415                     //set = set(ret);
416                 }
417             }
418             public static class MetaStringLiteral extends MetaClause {
419                 public String literal;
420                 public Element build(BuildContext bc) { return string(literal); }
421                 public MetaStringLiteral(Tree<String> literal) { this.literal = string(literal); this.drop = true; }
422                 public String toString() { return "\""+StringUtil.escapify(literal, "\"\r\n\\")+"\""; }
423             }
424             public static class MetaNonterminalReference extends MetaClause {
425                 public String name;
426                 public MetaNonterminalReference(Tree<String> name) { this.name = string(name); }
427                 public Element build(BuildContext bc) { return bc.build(name); }
428                 public String toString() { return name; } 
429             }
430             public static class MetaSelfReference extends MetaClause {
431                 public String toString() { return "(*)"; } 
432                 public Element build(BuildContext bc) { return new Union("(*)"); /* FIXME */ }
433             }
434             public static class MetaInvert extends MetaClause {
435                 public MetaClause element;
436                 public MetaInvert(Tree<String> t, MetaConjunct c) { this.element = make(t, c); }
437                 public String toString() { return "~"+element; }
438                 public Element build(BuildContext bc) { return new Hack(new Invert(new Infer(element.build(bc)))); }
439             }
440         }
441
442     }
443
444     public Object walk(Tree<String> tree) {
445         String head = tree.head();
446         if (tree.numChildren()==0) return super.walk(tree);
447         if      ("\\n".equals(head)) return new Character('\n');
448         else if ("\\r".equals(head)) return new Character('\r');
449         else if ("grammar".equals(head)) { for(Tree<String> t : tree.children()) walk(t); return this; }
450         else if ("*".equals(head))   return Sequence.many0((Element)walk(tree.child(0)), repeatTag());
451         else if ("+".equals(head))   return Sequence.many1((Element)walk(tree.child(0)), repeatTag());
452         else if ("+/".equals(head))  return Sequence.many1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
453         else if ("*/".equals(head))  return Sequence.many0((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
454         else if ("++/".equals(head)) return Sequence.maximal1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
455         else if ("**".equals(head))  return Sequence.maximal0((Element)walk(tree.child(0)), repeatTag());
456         else if ("++".equals(head))  return Sequence.maximal1((Element)walk(tree.child(0)), repeatTag());
457         else if ("?".equals(head))   return Sequence.maybe((Element)walk(tree.child(0)), repeatTag());
458         else if ("!".equals(head))   { Element e = (Element)walk(tree.child(0)); dropAll.add(e); return e; }
459         else if ("&".equals(head))   return ((Sequence)walk(tree,0)).and(sequence(walk(tree, 1), true));
460         else if ("and".equals(head)) return ((Sequence)walk(tree,0)).and(sequence(walk(tree, 1), true));
461         else if ("&~".equals(head))  return ((Sequence)walk(tree,0)).not(sequence(walk(tree, 1), true));
462         else if ("epsilon".equals(head)) return Union.epsilon;
463         else if ("()".equals(head)) return Union.epsilon;
464         else if (")".equals(head)) return SELF;
465         else if ("caret".equals(head) || "^".equals(head)) {
466             String s = string(tree.child(0));
467             Element ret = CharRange.string(s, false);
468             carets.put(ret, s);
469             dropAll.add(ret);
470             return ret;
471             /*
472         } else if ("^^".equals(head)) {
473             return new Keep(walk(tree,0));
474             */
475         } else if ("psx".equals(head)) return ((PreSequence)walk(tree, 0)).buildSequence();
476         else if ("nonTerminal".equals(head)) return getNonTerminal(string(tree.child(0)));
477         else if ("::=".equals(head)) return nonTerminal(string(tree.child(0)), (Sequence[][])Reflection.lub(walk(tree, 1)), false, false);
478         else if ("=".equals(head)) return nonTerminal(string(tree.child(0)), (Sequence[][])Reflection.lub(walk(tree, 1)), false, false);
479         else if ("(".equals(head)) return buildUnion((Sequence[][])Reflection.lub(walk(tree, 0)));
480         else if ("literal".equals(head)) { Element ret = string(string(tree.child(0))); dropAll.add(ret); return ret; }
481         else if ("-".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,1).toString().charAt(0));
482         else if ("range".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,0).toString().charAt(0));
483         else if ("gram".equals(head)) return walk(tree, 0);
484         else if ("psy".equals(head)) return (PreSequence)walk(tree, 0);
485         else if ("->".equals(head)) { PreSequence p = (PreSequence)walk(tree, 0); p.follow = (Element)walk(tree, 1); return p; }
486         else if ("/".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1));
487         else if (" /".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1));
488         else if ("~".equals(head)) return new Hack(new Invert(new Infer((Element)walk(tree, 0))));
489         else if ("ps".equals(head)) return new PreSequence((Object[])walk(tree,0), null);
490         else if (":".equals(head)) {
491             String s = string(tree.child(0));
492             return new Keep(s,walk(tree,1));
493         } else if ("::".equals(head)) {
494             PreSequence p = (PreSequence)walk(tree, 1);
495             String s = string(tree.child(0));
496             if (s.equals("[]")) p.unwrap = true;
497             else p.tag = convertLabel(s);
498             return p;
499         }
500         else if ("=>".equals(head)) {
501             PreSequence p = (PreSequence)walk(tree, 0);
502             p.tag = string(tree.child(1));
503             return p;
504         }
505         else if ("[".equals(head)) {
506             Range[] rr = (Range[])walk(tree, 0);
507             Range.Set ret = new Range.Set();
508             if (rr!=null) for(Range r : rr) ret.add(r);
509             return set(ret);
510         }
511         else return super.walk(tree);
512     }
513
514     static class Keep {
515         public final String label;
516         public final Object o;
517         public Keep(String label, Object o) { this.label = label; this.o = o; }
518     }
519
520     public Object convertLabel(String label) { return label; }
521     public Object repeatTag() { return null; }
522
523     public Object walk(String tag, Object[] argo) {
524         if (argo.length==0) return super.walk(tag, argo);
525         if (argo==null) return tag;
526         if (tag==null || "".equals(tag)) return argo;
527         return super.walk(tag, argo);
528     }
529
530     public Union buildUnion(Sequence[][] p) {
531         return anonymousNonTerminal(p);
532     }
533
534     //////////////////////////////////////////////////////////////////////////////
535
536     public class PreSequence {
537         public Element follow = null;
538         public final HashSet<Sequence> and  = new HashSet<Sequence>();
539         public final HashSet<Sequence> not  = new HashSet<Sequence>();
540         public /*final*/ Object tag;
541         public final Object[] o;
542
543         public PreSequence sparse(Object e) {
544             Object[] ret;
545             boolean[] drops;
546             if (o.length <= 1) {
547                 ret = o;
548                 drops = new boolean[this.drops.length];
549                 System.arraycopy(this.drops, 0, drops, 0, this.drops.length);
550             } else {
551                 ret = new Object[o.length * 2 - 1];
552                 drops = new boolean[o.length * 2 - 1];
553                 for(int i=0; i<o.length; i++) {
554                     Object oi = o[i];
555                     ret[i*2]   = oi;
556                     drops[i*2] = this.drops[i];
557                     if (i*2+1<ret.length) {
558                         ret[i*2+1] = e;
559                         drops[i*2+1] = true;
560                     }
561                 }
562             }
563             PreSequence p = new PreSequence(ret, tag, drops);
564             p.not.addAll(not);
565             p.and.addAll(and);
566             return p;
567         }
568
569         public PreSequence not(Sequence s) { not.add(s); return this; }
570         public PreSequence and(Sequence s) { and.add(s); return this; }
571
572         boolean[] drops = null;
573         public PreSequence(Object o) { this(new Object[] { o }, null); }
574         public PreSequence(Object[] o) { this(o, null); }
575         public PreSequence(Object[] o, Object tag) { this(o, tag, null); }
576         public PreSequence(Object[] o, Object tag, boolean[] drops) {
577             this.o = o;
578             this.tag = tag;
579             this.drops = drops==null ? new boolean[o.length] : drops;
580         }
581
582         public Union    buildUnion(String s) {
583             Union u = new Union(s);
584             u.add(buildSequence(u));
585             return u;
586         }
587         public Union    buildUnion() { return buildUnion("???"); }
588         public boolean unwrap = false;
589         public Sequence buildSequence() { return buildSequence(null, false, false); }
590         public Sequence buildSequence(Union u) { return buildSequence(u, false, false); }
591         public Sequence buildSequence(Union u, boolean lame, Object tag) {
592             this.tag = tag;
593             return buildSequence(u, lame, false);
594         }
595         public Sequence buildSequence(Union u, boolean lame, boolean dropAll) {
596             if (tag!=null && tag.equals("[]")) unwrap = true;
597             if (tag!=null && "()".equals(tag)) dropAll=true;
598             if (u!=null) {
599                 for(Sequence s : and) u.add(s);
600                 for(Sequence s : not) u.add(s);
601             }
602             HashSet<Sequence> set = new HashSet<Sequence>();
603             Element[] o2 = o==null ? new Element[0] : new Element[o.length];
604             Object[] labels = new Object[drops.length];
605             int nonDrop = 0;
606             boolean keeping = false;
607             if (o != null) {
608                 int j = 0;
609                 for(int i=0; i<o.length; i++) {
610                     Object oi = o[i];
611                     if (oi instanceof Keep)    {
612                         if (!unwrap && tag==null) throw new Error("cannot have labels in an untagged sequence: " + ((Keep)oi).label);
613                         if (!keeping) { for(int k=0; k<i; k++) drops[k]=true; }
614                         drops[i] = false;
615                         keeping = true;
616                         labels[i] = ((Keep)oi).label;
617                         oi = ((Keep)oi).o;
618                     } else {
619                         if (keeping) drops[i] = true;
620                     }
621                     /*if (oi==SELF)                    o2[j] = u.new Subset("(("+u+"))", set);
622                       else*/                             o2[j] = (Element)oi;
623
624                     if (MetaGrammar.dropAll.contains(o2[j])) drops[j] = true;
625                     nonDrop += drops[j] ? 0 : 1;
626                     o2[j] = o2[j];
627                     String s = carets.get(o2[j]);
628                     if (s!=null) { tag = s; if (o.length==1) drops[j] = false; }
629                     j++;
630                 }
631             }
632             Element[] expansion = o2;
633             Sequence ret = null;
634             if (dropAll || lame) ret = Sequence.drop(expansion, lame);
635             else if (unwrap)    ret = Sequence.unwrap(expansion, repeatTag(), drops);
636             else if (keeping || tag!=null) ret = Sequence.rewritingSequence(tag, expansion, labels, drops);
637             else {
638                 int idx = -1;
639                 for(int i=0; i<expansion.length; i++)
640                     if (!drops[i])
641                         if (idx==-1) idx = i;
642                         else throw new Error("multiple non-dropped elements in sequence: " + Sequence.drop(expansion,false));
643                 if (idx != -1) ret = Sequence.singleton(expansion, idx);
644                 else           ret = Sequence.drop(expansion, false);
645             }
646             for(Sequence s : and) ret = ret.and(s);
647             for(Sequence s : not) ret = ret.not(s);
648             set.add(ret);
649             if (this.follow != null) ret.follow = new Infer(this.follow);
650             return ret;
651         }
652     }
653
654     public static void main(String[] args) throws Exception {
655         if (args.length != 2) {
656             System.err.println("usage: java " + MetaGrammar.class.getName() + " grammarfile.g com.yourdomain.package.ClassName");
657             System.exit(-1);
658         }
659         //StringBuffer sbs = new StringBuffer();
660         //((MetaGrammar)new MetaGrammar().walk(meta)).nt.get("e").toString(sbs);
661         //System.err.println(sbs);
662         String className   = args[1].substring(args[1].lastIndexOf('.')+1);
663         String packageName = args[1].substring(0, args[1].lastIndexOf('.'));
664         String fileName    = packageName.replace('.', '/') + "/" + className + ".java";
665
666         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
667         StringBuffer out = new StringBuffer();
668
669         boolean skip = false;
670         for(String s = br.readLine(); s != null; s = br.readLine()) {
671             if (s.indexOf("DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED") != -1 && s.indexOf("\"")==-1) skip = true;
672             if (s.indexOf("DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED") != -1 && s.indexOf("\"")==-1) break;
673             if (!skip) out.append(s+"\n");
674         }
675
676         out.append("\n        // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED\n");
677         Tree<String> ts = new CharParser(MetaGrammar.make()).parse(new FileInputStream(args[0])).expand1();
678
679         Meta.MetaGrammarFile mgf = new MetaGrammar.Meta.MetaGrammarFile(ts);
680         BuildContext bc = new BuildContext(mgf);
681         for(Meta.MetaNonterminal nt : mgf.values()) {
682             StringBuffer sb = new StringBuffer();
683             nt.build(bc).toString(sb);
684             System.err.println(sb);
685         }
686
687         Forest<String> fs = new CharParser(mgf.get("s").build(new BuildContext(mgf))).parse(new FileInputStream(args[0]));
688         System.out.println(fs.expand1());
689         //GraphViz gv = new GraphViz();
690         //fs.toGraphViz(gv);
691         //FileOutputStream fox = new FileOutputStream("out.dot");
692         //gv.dump(fox);
693         //fox.close();
694
695         ts.toJava(out);
696         out.append("\n        // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED\n");
697
698         for(String s = br.readLine(); s != null; s = br.readLine()) out.append(s+"\n");
699         br.close();
700
701         //OutputStream os = new FileOutputStream(fileName);
702         //PrintWriter p = new PrintWriter(new OutputStreamWriter(os));
703         //p.println(out.toString());
704         //p.flush();
705         //os.close();
706     }
707
708     public static final Tree meta =
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963         // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED
964 new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
965         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
966         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
967         new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
968         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
969         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
970         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
971         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
972         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
973         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })}),
974         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
975         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
976         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
977         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
978         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
979         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
980         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
981         new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
982         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
983         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
984         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
985         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
986         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
987         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
988         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
989         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })}),
990         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
991         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
992         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
993         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
994         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
995         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
996         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
997         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
998         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
999         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1000         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})}),
1001         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1002         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
1003         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
1004         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1005         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1006         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
1007         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1008         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1009         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1010         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
1011         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1012         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1013         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
1014         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1015         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1016         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1017         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
1018         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
1019         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
1020         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
1021         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})}),
1022         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1023         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1024         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
1025         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
1026         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })}),
1027         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1028         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1029         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1030         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1031         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1032         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1033         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1034         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1035         new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1036         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1037         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { })})}),
1038         new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1039         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})}),
1040         new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1041         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1042         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})}),
1043         new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1044         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})}),
1045         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
1046         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
1047         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1048         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1049         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1050         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1051         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1052         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
1053         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1054         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1055         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
1056         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1057         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1058         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1059         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1060         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1061         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1062         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1063         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1064         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1065         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1066         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
1067         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
1068         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
1069         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
1070         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
1071         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1072         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1073         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1074         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1075         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1076         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1077         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
1078         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1079         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1080         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1081         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1082         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})}),
1083         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1084         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1085         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1086         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
1087         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { }),
1088         new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})}),
1089         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1090         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1091         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1092         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1093         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1094         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1095         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1096         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1097         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1098         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1099         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1100         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1101         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
1102         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1103         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1104         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1105         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1106         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1107         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1108         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1109         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1110         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1111         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1112         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1113         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1114         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1115         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1116         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1117         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1118         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1119         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1120         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1121         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1122         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1123         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1124         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1125         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1126         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1127         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1128         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { }),
1129         new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})}),
1130         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1131         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1132         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1133         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1134         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1135         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1136         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1137         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1138         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1139         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1140         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
1141         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
1142         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
1143         new edu.berkeley.sbp.Tree(null, "x", new edu.berkeley.sbp.Tree[] { })}),
1144         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1145         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1146         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1147         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1148         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1149         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1150         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1151         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1152         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1153         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1154         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1155         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1156         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1157         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1158         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1159         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1160         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1161         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1162         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1163         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { })})}),
1164         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
1165         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
1166         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1167         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1168         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1169         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1170         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1171         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1172         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1173         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1174         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1175         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1176         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1177         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1178         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1179         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1180         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1181         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1182         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { }),
1183         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})}),
1184         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
1185         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
1186         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1187         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1188         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1189         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1190         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1191         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1192         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1193         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1194         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1195         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })}),
1196         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })}),
1197         new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })}),
1198         new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1199         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1200         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
1201         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1202         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1203         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
1204         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1205         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
1206         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
1207         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1208         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1209         new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
1210         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
1211         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1212         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1213         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1214         new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
1215         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
1216         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1217         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1218         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1219         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})}),
1220         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })})}),
1221         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1222         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
1223         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
1224         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
1225         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1226         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1227         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1228         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1229         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})}),
1230         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1231         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1232         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1233         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
1234         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})}),
1235         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1236         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1237         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1238         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1239         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
1240         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1241         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1242         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
1243         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
1244         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1245         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1246         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
1247         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1248         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1249         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1250         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1251         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
1252         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
1253         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1254         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1255         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1256         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1257         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
1258         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
1259         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1260         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1261         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1262         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1263         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1264         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
1265         new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})})}),
1266         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "{", new edu.berkeley.sbp.Tree[] { })})}),
1267         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
1268         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1269         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1270         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
1271         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1272         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
1273         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1274         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1275         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1276         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1277         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1278         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "}", new edu.berkeley.sbp.Tree[] { })})})})}),
1279         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1280         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1281         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { })})}),
1282         new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
1283         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1284         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
1285         new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
1286         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
1287         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })})})})})}),
1288         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1289         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
1290         new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})}),
1291         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1292         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1293         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1294         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1295         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})}),
1296         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1297         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1298         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1299         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1300         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
1301         new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
1302         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1303         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1304         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1305         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1306         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1307         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
1308         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1309         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1310         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1311         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1312         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1313         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
1314         new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})}),
1315         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1316         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1317         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1318         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1319         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})}),
1320         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1321         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
1322         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1323         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1324         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
1325         new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
1326         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1327         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1328         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1329         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1330         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1331         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
1332         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1333         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1334         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1335         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1336         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { })})}),
1337         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
1338         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1339         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1340         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
1341         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "?", new edu.berkeley.sbp.Tree[] { })})})})}),
1342         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1343         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1344         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { })})}),
1345         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
1346         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1347         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1348         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1349         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1350         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})}),
1351         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { })})}),
1352         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1353         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1354         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1355         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
1356         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})}),
1357         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1358         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
1359         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { })})}),
1360         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
1361         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
1362         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})}),
1363         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})}),
1364         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1365         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
1366         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})}),
1367         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1368         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { }),
1369         new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { })}),
1370         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { })})}),
1371         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
1372         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
1373         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1374         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
1375         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
1376         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "++", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1377         new edu.berkeley.sbp.Tree(null, "z", new edu.berkeley.sbp.Tree[] { })}),
1378         new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "A", new edu.berkeley.sbp.Tree[] { }),
1379         new edu.berkeley.sbp.Tree(null, "Z", new edu.berkeley.sbp.Tree[] { })}),
1380         new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "0", new edu.berkeley.sbp.Tree[] { }),
1381         new edu.berkeley.sbp.Tree(null, "9", new edu.berkeley.sbp.Tree[] { })}),
1382         new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "_", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
1383         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
1384         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
1385         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
1386         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
1387         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1388         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
1389         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})}),
1390         new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })}),
1391         new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1392         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1393         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
1394         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1395         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1396         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
1397         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1398         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})}),
1399         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})}),
1400         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "", new edu.berkeley.sbp.Tree[] { }),
1401         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { }),
1402         new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
1403         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1404         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
1405         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
1406         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
1407         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
1408         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
1409         new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
1410         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })}),
1411         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
1412         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1413         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
1414         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
1415         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})}),
1416         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})}),
1417         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
1418         new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
1419         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })}),
1420         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})}),
1421         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})})}),
1422         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
1423         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1424         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
1425         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
1426         new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })}),
1427         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
1428         new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
1429         new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })}),
1430         new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})}),
1431         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { }),
1432         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
1433         new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})})}),
1434         new edu.berkeley.sbp.Tree(null, "literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})}),
1435         new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1436         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
1437         new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
1438         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { })}),
1439         new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "++", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})
1440         // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED
1441         ;
1442 }
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720