0
|
1 package nabble.naml.compiler;
|
|
2
|
|
3 import java.util.Map;
|
|
4 import java.util.HashMap;
|
|
5 import java.util.Set;
|
|
6 import nabble.naml.dom.Naml;
|
|
7
|
|
8
|
|
9 final class MacroScope {
|
|
10 final Macro macro;
|
|
11 final MacroScope parentScope;
|
|
12 private final Map<String,Naml> args = new HashMap<String,Naml>();
|
|
13 private final Map<String,ParamChunk> paramChunks = new HashMap<String,ParamChunk>();
|
|
14 boolean hasVars = false;
|
|
15
|
|
16 private MacroScope(Macro macro,MacroScope parentScope) {
|
|
17 this.macro = macro;
|
|
18 this.parentScope = parentScope;
|
|
19 }
|
|
20
|
|
21 MacroScope(Macro macro) {
|
|
22 this(macro,null);
|
|
23 }
|
|
24
|
|
25 Source source() {
|
|
26 return macro.source;
|
|
27 }
|
|
28
|
|
29 void addArg(String name,Naml naml) {
|
|
30 args.put(name,naml);
|
|
31 }
|
|
32
|
|
33 void addParamChunk(ParamChunk paramChunk) {
|
|
34 paramChunks.put(paramChunk.name,paramChunk);
|
|
35 }
|
|
36
|
|
37 Naml getArg(String name) {
|
|
38 return args.get(name);
|
|
39 }
|
|
40
|
|
41 ParamChunk getParamChunk(String name) {
|
|
42 return paramChunks.get(name);
|
|
43 }
|
|
44
|
|
45 Set<String> getArgNames() {
|
|
46 return args.keySet();
|
|
47 }
|
|
48
|
|
49 MacroScope newScope(Macro macro) {
|
|
50 return new MacroScope(macro,this);
|
|
51 }
|
|
52 }
|