1 package edu.berkeley.sbp.misc;
4 import java.lang.reflect.*;
5 import java.lang.ref.*;
6 import edu.berkeley.sbp.*;
7 import edu.berkeley.sbp.*;
8 import edu.berkeley.sbp.util.*;
9 import edu.berkeley.sbp.*;
11 public abstract class TreeWalker<T> {
12 public abstract Object walk(T head, Object[] args);
13 public Object walk(Tree<T> tree) {
14 Object[] args = new Object[tree.numChildren()];
16 for(Tree<T> child : tree.children()) args[i++] = walk(child);
17 args = Reflection.lub(args);
18 return walk(tree.head(), args);