1 package antlr;
2
3 * <b>SOFTWARE RIGHTS</b>
5 * <p>
6 * ANTLR 2.5.0 MageLang Institute, 1998
7 * <p>
8 * We reserve no legal rights to the ANTLR--it is fully in the
9 * public domain. An individual or company may do whatever
10 * they wish with source code distributed with ANTLR or the
11 * code generated by ANTLR, including the incorporation of
12 * ANTLR, or its output, into commerical software.
13 * <p>
14 * We encourage users to develop software with ANTLR. However,
15 * we do ask that credit is given to us for developing
16 * ANTLR. By "credit", we mean that if you use ANTLR or
17 * incorporate any source code into one of your programs
18 * (commercial product, research project, or otherwise) that
19 * you acknowledge this fact somewhere in the documentation,
20 * research report, etc... If you like ANTLR and have
21 * developed a nice tool with the output, please mention that
22 * you developed it using ANTLR. In addition, we ask that the
23 * headers remain intact in our source code. As long as these
24 * guidelines are kept, we expect to continue enhancing this
25 * system and expect to make other tools available as they are
26 * completed.
27 * <p>
28 * The ANTLR gang:
29 * @version ANTLR 2.5.0 MageLang Institute, 1998
30 * @author Terence Parr, <a href=http://www.MageLang.com>MageLang Institute</a>
31 * @author <br>John Lilley, <a href=http://www.Empathy.com>Empathy Software</a>
32 */
33 import java.io.*;
34 import antlr.collections.AST;
35
36
37 public class DumpASTVisitor implements ASTVisitor {
38 protected int level = 0;
39
40
41 private void tabs() {
42 for (int i = 0; i < level; i++) {
43 System.out.print(" ");
44 }
45 }
46 public void visit(AST node) {
47 boolean flatten = false;
49 AST node2;
50 for (node2 = node; node2 != null ; node2 = node2.getNextSibling()) {
51 if (node2.getFirstChild() != null) {
52 flatten = false;
53 break;
54 }
55 }
56
57 for (node2 = node; node2 != null; node2 = node2.getNextSibling()) {
58 if (!flatten || node2 == node) {
59 tabs();
60 }
61 if ( node2.getText()==null ) {
62 System.out.print("nil");
63 }
64 else {
65 System.out.print(node2.getText());
66 }
67
68 System.out.print(" [" + node2.getType() + "] ");
69
70 if (flatten) {
71 System.out.print(" ");
72 }
73 else {
74 System.out.println("");
75 }
76
77 if ( node2.getFirstChild() != null ) {
78 level++;
79 visit(node2.getFirstChild());
80 level--;
81 }
82 }
83
84 if (flatten) {
85 System.out.println("");
86 }
87 }
88 }
89