1 package net.sourceforge.pmd.util; 2 3 import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration; 4 import net.sourceforge.pmd.ast.ASTCompilationUnit; 5 import net.sourceforge.pmd.ast.JavaParserVisitorAdapter; 6 7 public class SymbolTableViewer extends JavaParserVisitorAdapter { 8 9 private int depth; 10 11 public Object visit(ASTCompilationUnit node, Object data) { 12 depth++; 13 System.out.println(spaces() + node.getScope()); 14 super.visit(node, data); 15 depth--; 16 return data; 17 } 18 19 public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { 20 depth++; 21 System.out.println(spaces() + node.getScope()); 22 super.visit(node, data); 23 depth--; 24 return data; 25 } 26 27 private String spaces() { 28 StringBuffer sb = new StringBuffer(depth); 29 for (int i=0; i<depth; i++) sb.append(' '); 30 return sb.toString(); 31 } 32 33 /* 34 public Object visit(ASTClassOrInterfaceBodyDeclaration node, Object data) { 35 System.out.println(node.getScope()); 36 node.dump(""); 37 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 38 } 39 40 public Object visit(ASTEnumDeclaration node, Object data) { 41 System.out.println(node.getScope()); 42 node.dump(""); 43 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 44 } 45 46 public Object visit(ASTBlock node, Object data) { 47 System.out.println(node.getScope()); 48 node.dump(""); 49 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 50 } 51 52 public Object visit(ASTTryStatement node, Object data) { 53 System.out.println(node.getScope()); 54 node.dump(""); 55 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 56 } 57 58 public Object visit(ASTCatchStatement node, Object data) { 59 System.out.println(node.getScope()); 60 node.dump(""); 61 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 62 } 63 64 public Object visit(ASTFinallyStatement node, Object data) { 65 System.out.println(node.getScope()); 66 node.dump(""); 67 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 68 } 69 70 public Object visit(ASTMethodDeclaration node, Object data) { 71 System.out.println(node.getScope()); 72 node.dump(""); 73 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 74 } 75 76 public Object visit(ASTConstructorDeclaration node, Object data) { 77 System.out.println(node.getScope()); 78 node.dump(""); 79 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 80 } 81 82 public Object visit(ASTSwitchLabel node, Object data) { 83 System.out.println(node.getScope()); 84 node.dump(""); 85 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 86 } 87 88 public Object visit(ASTIfStatement node, Object data) { 89 System.out.println(node.getScope()); 90 node.dump(""); 91 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 92 } 93 94 public Object visit(ASTForStatement node, Object data) { 95 System.out.println(node.getScope()); 96 node.dump(""); 97 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates. 98 } 99 */ 100 101 }