X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FMetaGrammar.java;h=3a6f59d47ed8d5cd90d0705fb66e649b2fa41b57;hp=869e0fa1ec0577d2f2c7d31b50180976acbc0ade;hb=bad286576656a73e315f0aa7b08a1c1714eb8390;hpb=225993309e6183afa9a88fc13d39df56be54b992 diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 869e0fa..3a6f59d 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -2,1719 +2,649 @@ package edu.berkeley.sbp.misc; import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; import edu.berkeley.sbp.chr.*; +import edu.berkeley.sbp.bind.*; import java.util.*; +import java.lang.annotation.*; +import java.lang.reflect.*; import java.io.*; -public class MetaGrammar extends StringWalker { +public class MetaGrammar { + + public static boolean harsh = true; - public static Object repeatTag = null; + public static void main(String[] args) throws Exception { + if (args.length != 2) { + System.err.println("usage: java " + MetaGrammar.class.getName() + " grammarfile.g com.yourdomain.package.ClassName"); + System.exit(-1); + } + //StringBuffer sbs = new StringBuffer(); + //((MetaGrammar)new MetaGrammar().walk(meta)).nt.get("e").toString(sbs); + //System.err.println(sbs); + String className = args[1].substring(args[1].lastIndexOf('.')+1); + String packageName = args[1].substring(0, args[1].lastIndexOf('.')); + String fileName = packageName.replace('.', '/') + "/" + className + ".java"; - /** an atom which tracks the possible tokenset of some element, provided that element can only match single-token sequences */ - public static class Infer extends Atom { - private final Element e; - public Infer(Element e) { this.e = e; } - public Topology top() { return (Topology)toAtom(e); } - public String toString() { return e.toString(); } - } + BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); + StringBuffer out = new StringBuffer(); - /** an atom which tracks the inverse of some other atom */ - public static class Invert extends Atom { - private final Atom a; - public Invert(Atom a) { this.a = a; } - public Topology top() { return a.complement(); } - public String toString() { return "~"+a; } - } + boolean skip = false; + for(String s = br.readLine(); s != null; s = br.readLine()) { + if (s.indexOf("DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED") != -1 && s.indexOf("\"")==-1) skip = true; + if (s.indexOf("DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED") != -1 && s.indexOf("\"")==-1) break; + if (!skip) out.append(s+"\n"); + } - public static class Hack extends Atom { - private final Atom a; - static final Topology leftright = CharRange.rightBrace.union(CharRange.leftBrace); - public Hack(Atom a) { this.a = a; } - public Topology top() { return a.minus(leftright); } - public String toString() { return a.toString(); } - } + out.append("\n // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED\n"); - public static Union make() throws Exception { - Meta.MetaGrammarFile mgf = new MetaGrammar.Meta.MetaGrammarFile(meta); - BuildContext bc = new BuildContext(mgf); - return mgf.get("s").build(bc); - } - public String toString() { - StringBuffer ret = new StringBuffer(); - for(Union u : nt.values()) u.toString(ret); - return ret.toString(); - } + /* + ReflectiveMeta m = new ReflectiveMeta(); + Tree res = new CharParser(MetaGrammar.make()).parse(new FileInputStream(args[0])).expand1(); + MetaGrammar.Meta.MetaGrammarFile mgf = m.new MetaGrammarFile(res); + MetaGrammar.BuildContext bc = new MetaGrammar.BuildContext(mgf); + + Union meta = mgf.get("s").build(bc); + Tree t = new CharParser(meta).parse(new FileInputStream(args[0])).expand1(); + */ + Tree t = MetaGrammarTree.meta; + Union u = MetaGrammar.make(t, "s"); + + System.err.println(); + System.err.println("== parsing with parsed grammar ================================================================================="); + t = new CharParser((Union)u).parse(new FileInputStream(args[0])).expand1(); + System.out.println(t.toPrettyString()); + //Forest fs = new CharParser(make()).parse(new FileInputStream(args[0])); + //System.out.println(fs.expand1()); - public /*private*/ static HashSet dropAll = new HashSet(); - public /*private*/ static HashMap carets = new HashMap(); + //GraphViz gv = new GraphViz(); + //fs.toGraphViz(gv); + //FileOutputStream fox = new FileOutputStream("out.dot"); + //gv.dump(fox); + //fox.close(); - // Statics ////////////////////////////////////////////////////////////////////////////// + t.toJava(out); + out.append("\n // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED\n"); - private static final Union SELF = new Union("()"); + for(String s = br.readLine(); s != null; s = br.readLine()) out.append(s+"\n"); + br.close(); - //////////////////////////////////////////////////////////////////////////////// + OutputStream os = new FileOutputStream(fileName); + PrintWriter p = new PrintWriter(new OutputStreamWriter(os)); + p.println(out.toString()); + p.flush(); + os.close(); + } - private Union g; - private HashMap nt; - private int anon = 0; - private String startSymbol; - private static boolean strings; + public static class ReflectiveMetaPlain extends ReflectiveMeta { + public Object repeatTag() { return null; } + public Sequence tryResolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + return null; } + public Sequence resolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + return Sequence.rewritingSequence(tag, els, labels, drops); + } + } - private static Element set(Range.Set r) { if (strings) throw new Error(); return CharRange.set(r); } - private static Element string(String s) { return strings ? StringInput.string(s) : CharRange.string(s); } - private static Atom leftBrace() { return strings ? StringInput.leftBrace : CharRange.leftBrace; } - private static Atom rightBrace() { return strings ? StringInput.rightBrace : CharRange.rightBrace; } + public static class ReflectiveMeta /*extends MetaGrammar.Meta*/ { + private final Class _cl; + private final Class[] _inner; + public ReflectiveMeta() { + this(MG.class); + } + public ReflectiveMeta(Class c) { + this._cl = c; + this._inner = c.getDeclaredClasses(); + } + public ReflectiveMeta(Class c, Class[] inner) { + this._cl = c; + this._inner = inner; + } + private boolean match(Method m, String s) { return match(m.getAnnotation(bind.as.class), null, s); } + private boolean match(bind.as t, Class c, String s) { + if (t==null) return false; + if (t.value().equals(s)) return true; + if (c != null && t.equals("") && c.getSimpleName().equals(s)) return true; + return false; + } + /* + private boolean match(nonterminal t, Class c, String s) { + if (t==null) return false; + if (t.value().equals(s)) return true; + if (c != null && t.equals("") && c.getSimpleName().equals(s)) return true; + return false; + } + */ + private boolean match(Class c, String s, String nonTerminalName) { + if (match((bind.as)c.getAnnotation(bind.as.class), c, s)) return true; + //if (match((nonterminal)c.getAnnotation(bind.as.class), c, nonTerminalName)) return true; + return false; + } + public boolean match(Constructor con, String s, String nonTerminalName) { + Class c = con.getDeclaringClass(); + if (match((bind.as)con.getAnnotation(bind.as.class), null, s)) return true; + //if (match((nonterminal)con.getAnnotation(bind.as.class), c, s)) return true; + return false; + } + public Object repeatTag() { + return new Tree.ArrayBuildingTreeFunctor(); + } + public Sequence tryResolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + Production p = new Production(tag, nonTerminalName, els, labels, drops); + for(Method m : _cl.getMethods()) + if (new Target(m).isCompatible(p)) + return new Target(m).makeSequence(p); + for(Class c : _inner) + for(Constructor con : c.getConstructors()) + if (new Target(con).isCompatible(p)) + return new Target(con).makeSequence(p); + for(Class c : _inner) + if (new Target(c).isCompatible(p)) + return new Target(c).makeSequence(p); + return null; + } + public Sequence resolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + Sequence ret = tryResolveTag(tag, nonTerminalName, els, labels, drops); + if (ret != null) return ret; + String message = "could not find a Java method/class/ctor matching tag \""+tag+ + "\", nonterminal \""+nonTerminalName+"\" with " + els.length + " arguments"; + if (harsh) { + throw new RuntimeException(message); + } else { + System.err.println(message); + return Sequence.rewritingSequence(tag, els, labels, drops); + } + } + } - public MetaGrammar() { this("s", false); } - public MetaGrammar(String s) { this(s, false); } - public MetaGrammar(String s, boolean strings) { this.strings = strings; done(s); } - public Union done() { return done("s"); } - public Union done(String str) { - Union ret = g; - g = new Union(str); - startSymbol = str; - nt = new HashMap(); - dropAll = new HashSet(); - dropAll.add(leftBrace()); - dropAll.add(rightBrace()); - nt.put(str, g); - return ret; + + public static class Production { + public String tag; + public String nonTerminal; + public Object[] labels; + public boolean[] drops; + public Element[] elements; + public int count = 0; + public Production(String tag, String nonTerminal, Element[] elements, Object[] labels, boolean[] drops) { + this.tag = tag; + this.elements = elements; + this.nonTerminal = nonTerminal; + this.labels = labels; + this.drops = drops; + for(int i=0; i seqs = new HashSet(); - for(int i=0; i temp = new HashSet(); - for(Sequence pre : s[i]) { - for(Sequence sn : seqs) pre = pre.not(sn); - temp.add(pre); - n.add(pre); + // FIXME: can be smarter here + if (names.length==p.count) { + int[] ret = new int[p.count]; + for(int i=0; i> children) { - String ret = ""; - for(Tree t : children) ret += string(t); - return ret; } - public static String string(Tree tree) { - String ret = ""; - if (tree.head()!=null) ret += tree.head(); - ret += string(tree.children()); - return ret; + + public static class TargetReducer implements Tree.TreeFunctor, ToJava { + private int[] map; + private Bindable _bindable; + private boolean _israw; + + public void toJava(StringBuffer sb) { + sb.append("new MetaGrammar.TargetReducer(new int[] {"); + for(int i=0; i> t) { + if (_israw) return _bindable.impose(new Object[] { t }); + ArrayList ret = new ArrayList(); + for(Tree tc : t) { + if (tc.head() != null && tc.head() instanceof Functor) + ret.add(((Tree.TreeFunctor)tc.head()).invoke(tc.children())); + else if (tc.numChildren() == 0) + ret.add(tc.head()); + else { + System.err.println("FIXME: don't know what to do about " + tc); + ret.add(null); + } + } + System.err.println("input tree: " + t); + Object[] o = (Object[])ret.toArray(new Object[0]); + int max = 0; + for(int i=0; i keep = new HashSet(); - public Sequence sequence(Object o, boolean lame) { - return new PreSequence((Element[])Reflection.lub((Object[])o), null).buildSequence(null, lame, false); + public static Union cached = null; + public static Union make() { + /* + if (cached != null) return cached; + try { + ReflectiveMeta m = new ReflectiveMeta(); + Tree res = new CharParser(MetaGrammar.make()).parse(new FileInputStream("tests/meta.g")).expand1(); + MetaGrammar.Meta.MetaGrammarFile mgf = m.new MetaGrammarFile(res); + MetaGrammar.BuildContext bc = new MetaGrammar.BuildContext(mgf); + Union meta = mgf.get("s").build(bc); + Tree t = new CharParser(meta).parse(new FileInputStream("tests/meta.g")).expand1(); + return cached = make(t, "s"); + } catch (Exception e) { + throw new RuntimeException(e); + } + */ + return make(MetaGrammarTree.meta, "s"); } - - public static class BuildContext extends HashMap { - private final Meta.MetaGrammarFile mgf; - public BuildContext(Meta.MetaGrammarFile mgf) { this.mgf = mgf; } - public Union build(String s) { - Union ret = get(s); - if (ret != null) return ret; - return mgf.get(s).build(this); + public static Union make(Tree t, String s) { return make(t, s, new ReflectiveMeta()); } + public static Union make(Tree t, String s, ReflectiveMeta rm) { + System.out.println("Head: " + t.head()); + Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); + MG.Grammar g = (MG.Grammar)red.invoke(t.children()); + Context cx = new Context(g,rm); + Union u = null; + for(MG.NonTerminal nt : g.nonterminals) { + System.out.println(nt.name); + Union el = (Union)cx.get(nt.name); + StringBuffer st = new StringBuffer(); + el.toString(st); + System.err.println(st); + if (nt.name.equals(s)) u = el; } + return u; } - public static class Meta { - public static class MetaGrammarFile extends HashMap { - public MetaGrammarFile(Tree tree) { - if (!tree.head().equals("grammar")) throw new Error(); - for(Tree nt : tree.child(0)) - add(new MetaNonterminal(nt)); - } - private void add(MetaNonterminal mnt) { - this.put(mnt.name, mnt); + + + public static class MG { + public static @bind.as Object grammar(Object[] o) { + if (o==null) return null; + if (o[0] != null && o[0] instanceof Grammar) return o[0]; + Grammar g = new Grammar(); + g.nonterminals = (NonTerminal[])Reflection.lub((Object[])o); + return g; + } + public static @bind.as class Grammar { + public NonTerminal get(String s) { + for(NonTerminal nt : nonterminals) + if (nt.name.equals(s)) + return nt; + return null; } + public @bind.arg NonTerminal[] nonterminals; public String toString() { - String ret = ""; - for(MetaNonterminal mnt : this.values()) ret += mnt + "\n"; - return ret; - } - } - public static class MetaNonterminal { - public String name; - public MetaUnion rhs; - public MetaNonterminal(Tree tree) { - System.err.println("MetaNonterminal("+tree+")"); - name = string(tree.child(0)); - rhs = rhs(tree.child(1)); + String ret = "[ "; + for(NonTerminal nt : nonterminals) ret += nt + ", "; + return ret + " ]"; } - public String toString() { return name + " = " + rhs; } - public Union build(BuildContext bc) { return rhs.build(bc, name); } - } - public static MetaUnion rhs(Tree t) { - return t.numChildren()==1 - ? new MetaUnion(t.child(0), false) - : new MetaUnion(t, true); } - public static class MetaUnion implements MetaSequence { - public boolean prioritized; - public MetaSequence[] sequences; - public Sequence buildSequence(BuildContext bc) { - return Sequence.singleton(new Element[] { buildAnon(bc) }, 0); - } - public Union buildAnon(BuildContext bc) { - String s = ""; - for(int i=0; i0?"\n "+(prioritized?">":"|")+" ":"")+sequences[i].buildSequence(bc); - return build(bc, s); - } - public Union build(BuildContext bc, String name) { - Union u = bc.get(name); - if (u != null) return u; - u = new Union(name); - bc.put(name, u); - HashSet seqs = new HashSet(); - for(MetaSequence s : sequences) { - Sequence seq = s.buildSequence(bc); - if (seq != null) { - Sequence oseq = seq; - if (prioritized) - for(Sequence seqprev : seqs) - seq = seq.not(seqprev); - u.add(seq); - seqs.add(oseq); + public abstract static class Un extends El { + public Seq[][] sequences; + public void build(Context cx, Union u) { + HashSet bad2 = new HashSet(); + for(int i=0; i t, boolean prioritized) { - System.err.println("MetaUnion("+t+")"); - //System.err.println("metaunion: " + t); - this.prioritized = prioritized; - int i = 0; - this.sequences = new MetaSequence[t.numChildren()]; - for(Tree tt : t) - sequences[i++] = prioritized - ? new MetaUnion(tt, false) - : makeMetaSequence(tt); + } + public static class NonTerminal extends Un { + public String name = null; + public @bind.as("NonTerminal") NonTerminal(@bind.arg("Word") String name, + @bind.arg("RHS") Seq[][] sequences) { + this.name = name; + this.sequences = sequences; } - public String toString() { - String ret = "\n "; - for(int i=0; i " : "\n | "); - } + public Element build(Context cx) { return cx.get(name); } + } + + public static class AnonUn extends Un { + public @bind.as("(") AnonUn(Seq[][] sequences) { + this.sequences = sequences; + } + public Element build(Context cx) { + Union ret = new Union(); + build(cx, ret); return ret; } } - public interface MetaSequence { - public abstract Sequence buildSequence(BuildContext bc); + //public static @bind.as void range(char c) { } + public static class Range { + public @bind.as("range") Range(char only) { first = only; last = only; } + public @bind.as("-") Range(char first, char last) { this.first = first; this.last = last; } + public char first; + public char last; } - - public static MetaSequence makeMetaSequence(Tree t) { - System.err.println("MetaSequence("+t+")"); - if ("psx".equals(t.head())) return MetaConjunct.make(t.child(0)); - if (t.head().equals("&")) return new MetaAnd(makeMetaSequence(t.child(0)), MetaConjunct.make(t.child(1)), false); - if (t.head().equals("&~")) return new MetaAnd(makeMetaSequence(t.child(0)), MetaConjunct.make(t.child(1)), true); - return null; + public static abstract class El { + public String getLabel() { return null; } + public String getOwnerTag() { return null; } + public boolean drop() { return false; } + public abstract Element build(Context cx); } - - public static class MetaAnd implements MetaSequence { - boolean not; - MetaSequence left; - MetaSequence right; - public Sequence buildSequence(BuildContext bc) { - Sequence ret = left.buildSequence(bc); - if (not) ret.not(right.buildSequence(bc)); else ret.and(right.buildSequence(bc)); + public static class Drop extends El { + public El e; + public Drop(El e) { this.e = e; } + public String getLabel() { return null; } + public boolean drop() { return true; } + public String getOwnerTag() { return e.getOwnerTag(); } + public Element build(Context cx) { return e.build(cx); } + } + public static class Label extends El { + public String label; + public El e; + public Label(String label, El e) { this.e = e; this.label = label; } + public String getLabel() { return label; } + public String getOwnerTag() { return e.getOwnerTag(); } + public Element build(Context cx) { return e.build(cx); } + } + public static /*abstract*/ class Seq { + HashSet and = new HashSet(); + HashSet not = new HashSet(); + El[] elements; + El follow; + String tag = null; + boolean lame; + public Seq(El e) { this(new El[] { e }); } + public Seq(El[] elements) { this.elements = elements; } + public Seq tag(String tag) { this.tag = tag; return this; } + public Seq follow(El follow) { this.follow = follow; return this; } + public Seq dup() { + Seq ret = new Seq(elements); + ret.and.addAll(and); + ret.not.addAll(not); + ret.follow = follow; + ret.tag = tag; return ret; } - public MetaAnd(MetaSequence left, MetaSequence right, boolean not) { - this.left = left; - this.right = right; - this.not = not; + public Seq and(Seq s) { and.add(s); s.lame = true; return this; } + public Seq andnot(Seq s) { not.add(s); s.lame = true; return this; } + public Seq separate(El sep) { + El[] elements = new El[this.elements.length * 2 - 1]; + for(int i=0; i t) { - System.err.println("MetaConjunct("+t+")"); - elements = new MetaClause[t.numChildren()]; - int i = 0; for(Tree tt : t) - elements[i++] = MetaClause.make(tt, this); - } - public String toString() { - String ret = (tag==null ? "" : (tag+":: ")) + (negated ? "~" : ""); - if (elements.length > 1) ret += "("; - for(MetaClause mc : elements) ret += (" " + mc + " "); - if (separator != null) ret += " /" + separator; - if (followedBy != null) ret += " -> " + followedBy; - if (elements.length > 1) ret += ")"; - return ret; - } - public static MetaConjunct make(Tree t) { - System.err.println("MetaConjunct.make("+t+")"); - if ("/".equals(t.head())) { - MetaConjunct ret = make(t.child(0)); - ret.separator = MetaClause.make(t.child(1), ret); - return ret; - } - if ("->".equals(t.head())) { - MetaConjunct ret = make(t.child(0)); - ret.followedBy = MetaClause.make(t.child(1), ret); - return ret; - } - if ("::".equals(t.head())) { - MetaConjunct ret = make(t.child(1)); - ret.tag = string(t.child(0)); - return ret; - } - if ("ps".equals(t.head())) { - return new MetaConjunct(t.child(0)); - } - return new MetaConjunct(t); + } + public static @bind.as("&") Seq and(Seq s, El[] elements) { return s.and(seq(elements)); } + public static @bind.as("&~") Seq andnot(Seq s, El[] elements) { return s.andnot(seq(elements)); } + public static @bind.as("->") Seq arrow(Seq s, El e) { return s.follow(e); } + public static @bind.as("::") Seq tag(String tagname, Seq s) { return s.tag(tagname); } + public static @bind.as("/") Seq slash(Seq s, El e) { return s.separate(e); } + + public static @bind.as("ps") Seq seq(El[] elements) { return new Seq(elements); } + public static @bind.as Seq psx(Seq s) { return s; } + public static @bind.as(":") El colon(String s, El e) { return new Label(s, e); } + public static @bind.as(")") void close(String foo) { throw new Error("not supported"); } + public static @bind.as("()") El epsilon() { return new Constant(Union.epsilon); } + + public static @bind.as("nonTerminal") class NonTerminalReference extends El { + public @bind.arg String nonTerminal; + public Element build(Context cx) { + return cx.get(nonTerminal); } } - public static abstract class MetaClause { - public String label = null; - public boolean drop = false; - public boolean lift = false; - public abstract Element build(BuildContext bc); - public static MetaClause make(Tree t, MetaConjunct c) { - System.err.println("MetaClause.make("+t+")"); - if (t.head().equals("{")) throw new Error("metatree: " + t); - if (t.head().equals("*")) return new MetaRepeat(make(t.child(0), c), false, null, true, true); - if (t.head().equals("+")) return new MetaRepeat(make(t.child(0), c), false, null, false, true); - if (t.head().equals("?")) return new MetaRepeat(make(t.child(0), c), false, null, true, false); - if (t.head().equals("**")) return new MetaRepeat(make(t.child(0), c), true, null, true, true); - if (t.head().equals("++")) return new MetaRepeat(make(t.child(0), c), true, null, false, true); - if (t.head().equals("*/")) return new MetaRepeat(make(t.child(0), c), false, make(t.child(1), c), true, true); - if (t.head().equals("+/")) return new MetaRepeat(make(t.child(0), c), false, make(t.child(1), c), false, true); - if (t.head().equals("**/")) return new MetaRepeat(make(t.child(0), c), true, make(t.child(1), c), true, true); - if (t.head().equals("++/")) return new MetaRepeat(make(t.child(0), c), true, make(t.child(1), c), false, true); - if (t.head().equals("()")) return new MetaEpsilon(); - if (t.head().equals("[")) return new MetaRange(t.child(0)); - if (t.head().equals("literal")) return new MetaStringLiteral(t.child(0)); - if (t.head().equals("nonTerminal")) return new MetaNonterminalReference(t.child(0)); - if (t.head().equals(")")) return new MetaSelfReference(); - if (t.head().equals("(")) return new MetaParens(t.child(0)); - if (t.head().equals("~")) return new MetaInvert(t.child(0), c); - if (t.head().equals("!")) { MetaClause mc = make(t.child(0), c); mc.drop = true; return mc; } - if (t.head().equals("^")) { c.tag = string(t.child(0)); return new MetaStringLiteral(t.child(0)); } - if (t.head().equals("^^")) throw new Error("carets: " + t); - throw new Error("unknown: " + t); - } - public static class MetaRepeat extends MetaClause { - public MetaClause element, separator; - public boolean maximal, zero, many; - public Element build(BuildContext bc) { - return new Repeat(element.build(bc), zero, many, separator==null?null:separator.build(bc), maximal); - } - public MetaRepeat(MetaClause element, boolean maximal, MetaClause separator, boolean zero, boolean many) { - this.separator = separator; - this.element = element; - this.maximal = maximal; - this.zero = zero; - this.many = many; - } - public String toString() { - return element+ - ((zero&&!many)?"?":zero?"*":"+")+ - (!maximal?"":zero?"*":"+")+ - (separator==null?"":(" /"+separator)); - } - } - public static class MetaParens extends MetaClause { - public MetaUnion body; - public MetaParens(Tree t) { this.body = rhs(t); } - public String toString() { return "( " + body + " )"; } - public Element build(BuildContext bc) { return body.buildAnon(bc); } - } - /* - public static class MetaTree extends MetaClause { - public MetaConjunct body; - public MetaTree(Tree t) { this.body = MetaConjunct.make(t); } - public String toString() { return "{ " + body + " }"; } - public Element build(BuildContext bc) { - return new Union("{}");// body.buildSequence(); - } - } - */ - public static class MetaEpsilon extends MetaClause { - public String toString() { return "()"; } - public Element build(BuildContext bc) { return Union.epsilon; } - } - public static class MetaRange extends MetaClause { - Range.Set range = new Range.Set(); - public String toString() { return range.toString(); } - public Element build(BuildContext bc) { return set(range); } - public MetaRange(Tree t) { - for(Tree tt : t) { - if (tt.head().equals("range")) { - range.add(tt.child(0).head().charAt(0)); - } else if (tt.head().equals("-")) { - range.add(new Range(string(tt.child(0)).charAt(0), - string(tt.child(1)).charAt(0))); - } - } - //set = set(ret); - } - } - public static class MetaStringLiteral extends MetaClause { - public String literal; - public Element build(BuildContext bc) { return string(literal); } - public MetaStringLiteral(Tree literal) { this.literal = string(literal); this.drop = true; } - public String toString() { return "\""+StringUtil.escapify(literal, "\"\r\n\\")+"\""; } - } - public static class MetaNonterminalReference extends MetaClause { - public String name; - public MetaNonterminalReference(Tree name) { this.name = string(name); } - public Element build(BuildContext bc) { return bc.build(name); } - public String toString() { return name; } - } - public static class MetaSelfReference extends MetaClause { - public String toString() { return "(*)"; } - public Element build(BuildContext bc) { return new Union("(*)"); /* FIXME */ } - } - public static class MetaInvert extends MetaClause { - public MetaClause element; - public MetaInvert(Tree t, MetaConjunct c) { this.element = make(t, c); } - public String toString() { return "~"+element; } - public Element build(BuildContext bc) { return new Hack(new Invert(new Infer(element.build(bc)))); } + public static class StringLiteral extends Constant { + public @bind.as("literal") StringLiteral(String string) { super(CharRange.string(string)); } + public boolean drop() { return true; } + } + + public static class CharClass extends El { + Range[] ranges; + public @bind.as("[") CharClass(Range[] ranges) { this.ranges = ranges; } + public Element build(Context cx) { + edu.berkeley.sbp.util.Range.Set set = new edu.berkeley.sbp.util.Range.Set(); + for(Range r : ranges) + set.add(r.first, r.last); + return CharRange.set(set); } } - } + public static @bind.as("{") class XTree extends El { + public @bind.arg Seq body; + public Element build(Context cx) { + throw new Error(); + } + } - public Object walk(Tree tree) { - String head = tree.head(); - if (tree.numChildren()==0) return super.walk(tree); - if ("\\n".equals(head)) return new Character('\n'); - else if ("\\r".equals(head)) return new Character('\r'); - else if ("grammar".equals(head)) { for(Tree t : tree.children()) walk(t); return this; } - else if ("*".equals(head)) return Sequence.many0((Element)walk(tree.child(0)), repeatTag()); - else if ("+".equals(head)) return Sequence.many1((Element)walk(tree.child(0)), repeatTag()); - else if ("+/".equals(head)) return Sequence.many1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag()); - else if ("*/".equals(head)) return Sequence.many0((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag()); - else if ("++/".equals(head)) return Sequence.maximal1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag()); - else if ("**".equals(head)) return Sequence.maximal0((Element)walk(tree.child(0)), repeatTag()); - else if ("++".equals(head)) return Sequence.maximal1((Element)walk(tree.child(0)), repeatTag()); - else if ("?".equals(head)) return Sequence.maybe((Element)walk(tree.child(0)), repeatTag()); - else if ("!".equals(head)) { Element e = (Element)walk(tree.child(0)); dropAll.add(e); return e; } - else if ("&".equals(head)) return ((Sequence)walk(tree,0)).and(sequence(walk(tree, 1), true)); - else if ("and".equals(head)) return ((Sequence)walk(tree,0)).and(sequence(walk(tree, 1), true)); - else if ("&~".equals(head)) return ((Sequence)walk(tree,0)).not(sequence(walk(tree, 1), true)); - else if ("epsilon".equals(head)) return Union.epsilon; - else if ("()".equals(head)) return Union.epsilon; - else if (")".equals(head)) return SELF; - else if ("caret".equals(head) || "^".equals(head)) { - String s = string(tree.child(0)); - Element ret = CharRange.string(s, false); - carets.put(ret, s); - dropAll.add(ret); - return ret; - /* - } else if ("^^".equals(head)) { - return new Keep(walk(tree,0)); - */ - } else if ("psx".equals(head)) return ((PreSequence)walk(tree, 0)).buildSequence(); - else if ("nonTerminal".equals(head)) return getNonTerminal(string(tree.child(0))); - else if ("::=".equals(head)) return nonTerminal(string(tree.child(0)), (Sequence[][])Reflection.lub(walk(tree, 1)), false, false); - else if ("=".equals(head)) return nonTerminal(string(tree.child(0)), (Sequence[][])Reflection.lub(walk(tree, 1)), false, false); - else if ("(".equals(head)) return buildUnion((Sequence[][])Reflection.lub(walk(tree, 0))); - else if ("literal".equals(head)) { Element ret = string(string(tree.child(0))); dropAll.add(ret); return ret; } - else if ("-".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,1).toString().charAt(0)); - else if ("range".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,0).toString().charAt(0)); - else if ("gram".equals(head)) return walk(tree, 0); - else if ("psy".equals(head)) return (PreSequence)walk(tree, 0); - else if ("->".equals(head)) { PreSequence p = (PreSequence)walk(tree, 0); p.follow = (Element)walk(tree, 1); return p; } - else if ("/".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1)); - else if (" /".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1)); - else if ("~".equals(head)) return new Hack(new Invert(new Infer((Element)walk(tree, 0)))); - else if ("ps".equals(head)) return new PreSequence((Object[])walk(tree,0), null); - else if (":".equals(head)) { - String s = string(tree.child(0)); - return new Keep(s,walk(tree,1)); - } else if ("::".equals(head)) { - PreSequence p = (PreSequence)walk(tree, 1); - String s = string(tree.child(0)); - if (s.equals("[]")) p.unwrap = true; - else p.tag = convertLabel(s); - return p; + public static class Rep extends El { + public El e, sep; + public boolean zero, many, max; + public Rep(El e, El sep, boolean zero, boolean many, boolean max) { + this.e = e; this.sep = sep; this.zero = zero; this.many = many; this.max = max;} + public Element build(Context cx) { + return (!max) + ? Sequence.repeat(e.build(cx), zero, many, sep==null ? null : sep.build(cx), cx.rm.repeatTag()) + : sep==null + ? Sequence.repeatMaximal(infer(e.build(cx)), zero, many, cx.rm.repeatTag()) + : Sequence.repeatMaximal(e.build(cx), zero, many, infer(sep.build(cx)), cx.rm.repeatTag()); + } } - else if ("=>".equals(head)) { - PreSequence p = (PreSequence)walk(tree, 0); - p.tag = string(tree.child(1)); - return p; + public static class Constant extends El { + Element constant; + public Constant(Element constant) { this.constant = constant; } + public Element build(Context cx) { return constant; } } - else if ("[".equals(head)) { - Range[] rr = (Range[])walk(tree, 0); - Range.Set ret = new Range.Set(); - if (rr!=null) for(Range r : rr) ret.add(r); - return set(ret); + public abstract static class PostProcess extends El { + El e; + public PostProcess(El e) { this.e = e; } + public Element build(Context cx) { return postProcess(e.build(cx)); } + public abstract Element postProcess(Element e); } - else return super.walk(tree); - } - static class Keep { - public final String label; - public final Object o; - public Keep(String label, Object o) { this.label = label; this.o = o; } - } - - public Object convertLabel(String label) { return label; } - public Object repeatTag() { return null; } - - public Object walk(String tag, Object[] argo) { - if (argo.length==0) return super.walk(tag, argo); - if (argo==null) return tag; - if (tag==null || "".equals(tag)) return argo; - return super.walk(tag, argo); - } - - public Union buildUnion(Sequence[][] p) { - return anonymousNonTerminal(p); - } - - ////////////////////////////////////////////////////////////////////////////// + // FIXME: it would be nice if we could hoist this into "Rep" + public static @bind.as("++") El plusmax(final El e) { return new Rep(e, null, false, true, true); } + public static @bind.as("+") El plus(final El e) { return new Rep(e, null, false, true, false); } + public static @bind.as("++/") El plusmaxfollow(final El e, final El sep) { return new Rep(e, sep, false, true, true); } + public static @bind.as("+/") El plusfollow(final El e, final El sep) { return new Rep(e, sep, false, true, false); } + public static @bind.as("**") El starmax(final El e) { return new Rep(e, null, true, true, true); } + public static @bind.as("*") El star(final El e) { return new Rep(e, null, true, true, false); } + public static @bind.as("**/") El starmaxfollow(final El e, final El sep) { return new Rep(e, sep, true, true, true); } + public static @bind.as("*/") El starfollow(final El e, final El sep) { return new Rep(e, sep, true, true, false); } + public static @bind.as("?") El question(final El e) { return new Rep(e, null, true, true, false); } + + public static @bind.as("!") El bang(final El e) { return new Drop(e); } + + public static @bind.as("^") El caret(final String s) { + return new Drop(new Constant(CharRange.string(s)) { + public String getOwnerTag() { return s; } + }); + } - public class PreSequence { - public Element follow = null; - public final HashSet and = new HashSet(); - public final HashSet not = new HashSet(); - public /*final*/ Object tag; - public final Object[] o; + public static @bind.as("~") El tilde(final El e) { + return new PostProcess(e) { + public Element postProcess(Element e) { + return infer((Topology)Atom.toAtom(e).complement()); + } }; } - public PreSequence sparse(Object e) { - Object[] ret; - boolean[] drops; - if (o.length <= 1) { - ret = o; - drops = new boolean[this.drops.length]; - System.arraycopy(this.drops, 0, drops, 0, this.drops.length); - } else { - ret = new Object[o.length * 2 - 1]; - drops = new boolean[o.length * 2 - 1]; - for(int i=0; i map = new HashMap(); + private MG.Grammar grammar; + public String cnt = null; + private ReflectiveMeta rm; + public Context(MG.Grammar g, ReflectiveMeta rm) { + this.grammar = g; + this.rm = rm; } - public Sequence buildSequence(Union u, boolean lame, boolean dropAll) { - if (tag!=null && tag.equals("[]")) unwrap = true; - if (tag!=null && "()".equals(tag)) dropAll=true; - if (u!=null) { - for(Sequence s : and) u.add(s); - for(Sequence s : not) u.add(s); - } - HashSet set = new HashSet(); - Element[] o2 = o==null ? new Element[0] : new Element[o.length]; - Object[] labels = new Object[drops.length]; - int nonDrop = 0; - boolean keeping = false; - if (o != null) { - int j = 0; - for(int i=0; i red = (Tree.TreeFunctor)t.head(); + this.grammar = (MG.Grammar)red.invoke(t.children()); } - - out.append("\n // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED\n"); - Tree ts = new CharParser(MetaGrammar.make()).parse(new FileInputStream(args[0])).expand1(); - - Meta.MetaGrammarFile mgf = new MetaGrammar.Meta.MetaGrammarFile(ts); - BuildContext bc = new BuildContext(mgf); - for(Meta.MetaNonterminal nt : mgf.values()) { - StringBuffer sb = new StringBuffer(); - nt.build(bc).toString(sb); - System.err.println(sb); + public Union peek(String name) { return map.get(name); } + public void put(String name, Union u) { map.put(name, u); } + public Union get(String name) { + Union ret = map.get(name); + if (ret != null) return ret; + ret = new Union(name); + map.put(name, ret); + MG.NonTerminal nt = grammar.get(name); + if (nt==null) { + System.err.println("*** warning could not find " + name); + } else { + String old = cnt; + cnt = name; + nt.build(this, ret); + cnt = old; + } + return ret; } - Forest fs = new CharParser(mgf.get("s").build(new BuildContext(mgf))).parse(new FileInputStream(args[0])); - System.out.println(fs.expand1()); - //GraphViz gv = new GraphViz(); - //fs.toGraphViz(gv); - //FileOutputStream fox = new FileOutputStream("out.dot"); - //gv.dump(fox); - //fox.close(); - - ts.toJava(out); - out.append("\n // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED\n"); - - for(String s = br.readLine(); s != null; s = br.readLine()) out.append(s+"\n"); - br.close(); - - //OutputStream os = new FileOutputStream(fileName); - //PrintWriter p = new PrintWriter(new OutputStreamWriter(os)); - //p.println(out.toString()); - //p.flush(); - //os.close(); } - - public static final Tree meta = - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED -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[] { })}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "::", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", 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, "G", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", 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, "N", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "l", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "l", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "w", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "w", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "E", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "e", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "p", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, 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[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "W", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, ":", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "P", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, ">", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "p", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "x", 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "~", 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[] { }), - new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", 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[] { })}), - new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(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[] { })})})})})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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[] { }), - new edu.berkeley.sbp.Tree(null, "c", 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, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "c", 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, "e", 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, 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[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "W", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "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[] { })})})})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "l", 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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "l", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "l", 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[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "(", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(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[] { })})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "[", 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, "R", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", 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[] { })})})})})}), - 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[] { })})}), - 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, "+", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})})})})})}), - 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[] { })})}), - 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})})})})})}), - 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[] { })})}), - 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, "+", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "e", 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, "/", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "/", 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[] { })})}), - 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, "*", 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})})})})})}), - 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[] { })})}), - 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})})})})})}), - 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[] { })})}), - 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, "*", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "e", 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, "/", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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[] { })})}), - 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "e", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "^", 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[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "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[] { })})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "^", 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, "R", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "S", 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[] { })})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "~", 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[] { })})})})})})}), - 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[] { }), - 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[] { })})}), - 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[] { })})})})})})})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "-", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "z", 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[] { }), - new edu.berkeley.sbp.Tree(null, "Z", new edu.berkeley.sbp.Tree[] { })}), - new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "0", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "9", 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[] { })})})})})})})})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "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[] { })})}), - 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[] { })}), - new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(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, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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[] { })})})})})}), - 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, "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[] { }), - 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, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "d", 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, "\n", 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[] { }), - new edu.berkeley.sbp.Tree(null, "n", 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[] { })}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "r", 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[] { })})}), - 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[] { })}), - new edu.berkeley.sbp.Tree(null, "range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", 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, "w", 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, "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[] { })})})})})}), - 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[] { })})})})})}), - 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[] { })})})})})})})})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "(", 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, "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[] { })})})})})})})}), - 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[] { }), - 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, "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[] { })})})}), - 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[] { }), - 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, "[", 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[] { })})})})})}), - 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[] { })})}), - 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[] { }), - new edu.berkeley.sbp.Tree(null, "s", 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, "w", new edu.berkeley.sbp.Tree[] { }), - new edu.berkeley.sbp.Tree(null, "p", 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[] { })})})})})})})})})})})}) - // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED - ; + /*private*/ static Atom infer(Element e) { return infer((Topology)Atom.toAtom(e)); } + /*private*/ static Atom infer(Topology t) { return new CharRange(new CharTopology(t)); } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -