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