X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FTreeWalker.java;h=aeec51abca3179000bf9cf92a4ad8c266c1d7adf;hb=44f1ba1ec309f9be850bd9c9400dfc5289f85dd0;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..aeec51a 100644 --- a/src/edu/berkeley/sbp/misc/TreeWalker.java +++ b/src/edu/berkeley/sbp/misc/TreeWalker.java @@ -1,3 +1,5 @@ +// Copyright 2006 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);