X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FTreeWalker.java;h=ff64c6a43748d3de96d9c01e991208553fc6c086;hb=bbb16d2522ed587238fd7a69e346d5e5e8f2551a;hp=74f3f07b90542933bdc8d7cd10ebca5b5f3410fa;hpb=c91766b1001c9ea6f1d3f3aa945c8b90bb4940f2;p=sbp.git diff --git a/src/edu/berkeley/sbp/misc/TreeWalker.java b/src/edu/berkeley/sbp/misc/TreeWalker.java index 74f3f07..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,11 +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);