checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / TreeWalker.java
1 package edu.berkeley.sbp.misc;
2 import java.io.*;
3 import java.util.*;
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.*;
10
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()];
15         int i = 0;
16         for(Tree<T> child : tree.children()) args[i++] = walk(child);
17         args = Reflection.lub(args);
18         return walk(tree.head(), args);
19     }
20 }