SymbolTableViewer.java
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 }