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