Mercurial Hosting > nabble
comparison src/nabble/naml/compiler/MacroScope.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
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 } |