1 package net.sourceforge.pmd.symboltable;
2
3 import net.sourceforge.pmd.ast.SimpleNode;
4
5 import java.util.HashSet;
6 import java.util.Iterator;
7 import java.util.Set;
8 import java.util.Stack;
9
10 public class BasicScopeFactory implements ScopeFactory {
11
12 private Set scopeEvaluators = new HashSet();
13
14 public BasicScopeFactory() {
15 scopeEvaluators.add(new GlobalScopeEvaluator());
16 scopeEvaluators.add(new ClassScopeEvaluator());
17 scopeEvaluators.add(new MethodScopeEvaluator());
18 scopeEvaluators.add(new LocalScopeEvaluator());
19 }
20
21 public void openScope(Stack scopes, SimpleNode node) {
22 for (Iterator i = scopeEvaluators.iterator(); i.hasNext();) {
23 ScopeEvaluator ev = (ScopeEvaluator)i.next();
24 if (ev.isScopeCreatedBy(node)) {
25 Scope scope = ev.getScopeFor(node);
26 if (!(scope instanceof GlobalScope)) {
27 scope.setParent((Scope) scopes.peek());
28 }
29 scopes.add(scope);
30 node.setScope((Scope)scopes.peek());
31 break;
32 }
33 }
34 }
35
36 }
This page was automatically generated by Maven