View Javadoc
1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.symboltable; 5 6 import net.sourceforge.pmd.ast.SimpleNode; 7 8 import java.util.HashSet; 9 import java.util.Iterator; 10 import java.util.Set; 11 import java.util.Stack; 12 13 public class BasicScopeFactory implements ScopeFactory { 14 15 private Set scopeEvaluators = new HashSet(); 16 17 public BasicScopeFactory() { 18 scopeEvaluators.add(new GlobalScopeEvaluator()); 19 scopeEvaluators.add(new ClassScopeEvaluator()); 20 scopeEvaluators.add(new MethodScopeEvaluator()); 21 scopeEvaluators.add(new LocalScopeEvaluator()); 22 } 23 24 public void openScope(Stack scopes, SimpleNode node) { 25 for (Iterator i = scopeEvaluators.iterator(); i.hasNext();) { 26 ScopeEvaluator ev = (ScopeEvaluator)i.next(); 27 if (ev.isScopeCreatedBy(node)) { 28 Scope scope = ev.getScopeFor(node); 29 if (!(scope instanceof GlobalScope)) { 30 scope.setParent((Scope) scopes.peek()); 31 } 32 scopes.add(scope); 33 node.setScope((Scope)scopes.peek()); 34 break; 35 } 36 } 37 } 38 39 }

This page was automatically generated by Maven