View Javadoc
1 package net.sourceforge.pmd.symboltable; 2 3 import net.sourceforge.pmd.ast.ASTBlock; 4 import net.sourceforge.pmd.ast.ASTClassBodyDeclaration; 5 import net.sourceforge.pmd.ast.ASTCompilationUnit; 6 import net.sourceforge.pmd.ast.ASTConstructorDeclaration; 7 import net.sourceforge.pmd.ast.ASTForStatement; 8 import net.sourceforge.pmd.ast.ASTIfStatement; 9 import net.sourceforge.pmd.ast.ASTMethodDeclaration; 10 import net.sourceforge.pmd.ast.ASTSwitchStatement; 11 import net.sourceforge.pmd.ast.ASTTryStatement; 12 import net.sourceforge.pmd.ast.ASTUnmodifiedClassDeclaration; 13 import net.sourceforge.pmd.ast.ASTUnmodifiedInterfaceDeclaration; 14 import net.sourceforge.pmd.ast.JavaParserVisitorAdapter; 15 import net.sourceforge.pmd.ast.SimpleNode; 16 17 import java.util.Stack; 18 19 /*** 20 * Serves as a sort of adaptor between the AST nodes and the symbol table scopes 21 */ 22 public class BasicScopeCreationVisitor extends JavaParserVisitorAdapter { 23 24 private ScopeFactory sf; 25 private Stack scopes = new Stack(); 26 27 public BasicScopeCreationVisitor(ScopeFactory sf) { 28 this.sf = sf; 29 } 30 31 public Object visit(ASTCompilationUnit node, Object data) { 32 sf.openScope(scopes, node); 33 cont(node); 34 return data; 35 } 36 37 public Object visit(ASTUnmodifiedClassDeclaration node, Object data) { 38 sf.openScope(scopes, node); 39 cont(node); 40 return data; 41 } 42 43 public Object visit(ASTClassBodyDeclaration node, Object data) { 44 if (node.isAnonymousInnerClass()) { 45 sf.openScope(scopes, node); 46 cont(node); 47 } else { 48 super.visit(node, data); 49 } 50 return data; 51 } 52 53 public Object visit(ASTUnmodifiedInterfaceDeclaration node, Object data) { 54 sf.openScope(scopes, node); 55 cont(node); 56 return data; 57 } 58 59 public Object visit(ASTBlock node, Object data) { 60 sf.openScope(scopes, node); 61 cont(node); 62 return data; 63 } 64 65 public Object visit(ASTConstructorDeclaration node, Object data) { 66 sf.openScope(scopes, node); 67 cont(node); 68 return data; 69 } 70 71 public Object visit(ASTMethodDeclaration node, Object data) { 72 sf.openScope(scopes, node); 73 cont(node); 74 return data; 75 } 76 77 public Object visit(ASTTryStatement node, Object data) { 78 sf.openScope(scopes, node); 79 cont(node); 80 return data; 81 } 82 83 public Object visit(ASTForStatement node, Object data) { 84 sf.openScope(scopes, node); 85 cont(node); 86 return data; 87 } 88 89 public Object visit(ASTIfStatement node, Object data) { 90 sf.openScope(scopes, node); 91 cont(node); 92 return data; 93 } 94 95 public Object visit(ASTSwitchStatement node, Object data) { 96 sf.openScope(scopes, node); 97 cont(node); 98 return data; 99 } 100 101 private void cont(SimpleNode node) { 102 super.visit(node, null); 103 scopes.pop(); 104 } 105 }

This page was automatically generated by Maven