X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FTreeBuilder.java;fp=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FTreeBuilder.java;h=fbdd107b07d0f8efcb0095baffea403eacb10868;hb=a7ba8d8a5f0cb7fbb5bf67f1a95f1cad5226c507;hp=0000000000000000000000000000000000000000;hpb=41b74cd8469abb0bdff811f26594a7ef87cb26a6;p=sbp.git diff --git a/src/edu/berkeley/sbp/util/TreeBuilder.java b/src/edu/berkeley/sbp/util/TreeBuilder.java new file mode 100644 index 0000000..fbdd107 --- /dev/null +++ b/src/edu/berkeley/sbp/util/TreeBuilder.java @@ -0,0 +1,23 @@ +package edu.berkeley.sbp.util; +import edu.berkeley.sbp.*; +import java.util.*; + +public abstract class TreeBuilder implements Invokable,Boolean,Integer> { + public ArrayList> toks = new ArrayList>(); + public boolean toss; + protected T head; + public TreeBuilder(boolean toss) { this.toss = toss; } + public abstract void start(T head, Input.Location loc); + public abstract void finish(T head, Input.Location loc); + public abstract void addTree(Tree t); + public void invoke(Forest.Body bod, Boolean o, Integer i) { + if (i==null) { + ArrayList> toks = this.toks; + this.toks = new ArrayList>(); + bod.expand(0, this); + this.toks = toks; + } else { + bod.expand(i, this); + } + } +}