blob: 0f166510db59057200c77cd5fee64cfbdd81f9ce (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/* ____ ____ ____ ____ ______ *\
** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
** /_____/\____/\___/\____/____/ **
\* */
// $Id$
package meta.scalac.ast;
import meta.java.Type;
public class MetaTraverser extends AbstractTreeCaseExpander {
//########################################################################
// Public Methods
public void printTreeCaseBody(TreeNode node) {
if (node.fields != null)
for (int i = 0; i < node.fields.length; i++)
if (Tree.isTree(node.fields[i].type))
writer.println("traverse(" + node.fields[i] + ");");
writer.println("return;");
}
public void printTraverseArrays() {
int max = tree.arrays;
for (int i = 0; i < tree.nodes.length; i++)
max = Math.max(max, tree.nodes[i].arrays);
for (int i = 1; i <= max; i++)
printTraverseArray(tree.getType(i));
}
public void printTraverseArray(Type type) {
writer.print("public void traverse").
print("(").print(type).print(" trees)").lbrace();
writer.print("for (int i = 0; i < trees.length; i++) ").
println("traverse(trees[i]);");
writer.rbrace();
writer.line();
}
//########################################################################
}
|