X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FTreeWalker.java;h=ff64c6a43748d3de96d9c01e991208553fc6c086;hb=bbb16d2522ed587238fd7a69e346d5e5e8f2551a;hp=38cbb817f17d36ba18fcc5c3ce0e2764b12a9073;hpb=0a0227b9180534d2a431f3d6e08a398bde2244c4;p=sbp.git diff --git a/src/edu/berkeley/sbp/misc/TreeWalker.java b/src/edu/berkeley/sbp/misc/TreeWalker.java index 38cbb81..ff64c6a 100644 --- a/src/edu/berkeley/sbp/misc/TreeWalker.java +++ b/src/edu/berkeley/sbp/misc/TreeWalker.java @@ -1,3 +1,5 @@ +// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp.misc; import java.io.*; import java.util.*; @@ -10,8 +12,14 @@ import edu.berkeley.sbp.*; public abstract class TreeWalker { public abstract Object walk(T head, Object[] args); + public Object walk(Tree tree, int idx) { + return walk(tree.child(idx)); + } + public void walkChildren(Tree tree) { + for(Tree child : tree.children()) walk(child); + } public Object walk(Tree tree) { - Object[] args = new Object[tree.numChildren()]; + Object[] args = new Object[tree.size()]; int i = 0; for(Tree child : tree.children()) args[i++] = walk(child); args = Reflection.lub(args);