001 package net.sourceforge.pmd.util;
002
003 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
004 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
005 import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter;
006
007 public class SymbolTableViewer extends JavaParserVisitorAdapter {
008
009 private int depth;
010
011 public Object visit(ASTCompilationUnit node, Object data) {
012 depth++;
013 System.out.println(spaces() + node.getScope());
014 super.visit(node, data);
015 depth--;
016 return data;
017 }
018
019 public Object visit(ASTClassOrInterfaceDeclaration node, Object data) {
020 depth++;
021 System.out.println(spaces() + node.getScope());
022 super.visit(node, data);
023 depth--;
024 return data;
025 }
026
027 private String spaces() {
028 StringBuffer sb = new StringBuffer(depth);
029 for (int i=0; i<depth; i++) {
030 sb.append(' ');
031 }
032 return sb.toString();
033 }
034
035 /*
036 public Object visit(ASTClassOrInterfaceBodyDeclaration node, Object data) {
037 System.out.println(node.getScope());
038 node.dump("");
039 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
040 }
041
042 public Object visit(ASTEnumDeclaration node, Object data) {
043 System.out.println(node.getScope());
044 node.dump("");
045 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
046 }
047
048 public Object visit(ASTBlock node, Object data) {
049 System.out.println(node.getScope());
050 node.dump("");
051 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
052 }
053
054 public Object visit(ASTTryStatement node, Object data) {
055 System.out.println(node.getScope());
056 node.dump("");
057 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
058 }
059
060 public Object visit(ASTCatchStatement node, Object data) {
061 System.out.println(node.getScope());
062 node.dump("");
063 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
064 }
065
066 public Object visit(ASTFinallyStatement node, Object data) {
067 System.out.println(node.getScope());
068 node.dump("");
069 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
070 }
071
072 public Object visit(ASTMethodDeclaration node, Object data) {
073 System.out.println(node.getScope());
074 node.dump("");
075 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
076 }
077
078 public Object visit(ASTConstructorDeclaration node, Object data) {
079 System.out.println(node.getScope());
080 node.dump("");
081 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
082 }
083
084 public Object visit(ASTSwitchLabel node, Object data) {
085 System.out.println(node.getScope());
086 node.dump("");
087 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
088 }
089
090 public Object visit(ASTIfStatement node, Object data) {
091 System.out.println(node.getScope());
092 node.dump("");
093 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
094 }
095
096 public Object visit(ASTForStatement node, Object data) {
097 System.out.println(node.getScope());
098 node.dump("");
099 return super.visit(node, data); //To change body of implemented methods use File | Settings | File Templates.
100 }
101 */
102
103 }
|