Mercurial Hosting > nabble
view 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 |
line wrap: on
line source
package nabble.naml.compiler; import java.util.Map; import java.util.HashMap; import java.util.Set; import nabble.naml.dom.Naml; final class MacroScope { final Macro macro; final MacroScope parentScope; private final Map<String,Naml> args = new HashMap<String,Naml>(); private final Map<String,ParamChunk> paramChunks = new HashMap<String,ParamChunk>(); boolean hasVars = false; private MacroScope(Macro macro,MacroScope parentScope) { this.macro = macro; this.parentScope = parentScope; } MacroScope(Macro macro) { this(macro,null); } Source source() { return macro.source; } void addArg(String name,Naml naml) { args.put(name,naml); } void addParamChunk(ParamChunk paramChunk) { paramChunks.put(paramChunk.name,paramChunk); } Naml getArg(String name) { return args.get(name); } ParamChunk getParamChunk(String name) { return paramChunks.get(name); } Set<String> getArgNames() { return args.keySet(); } MacroScope newScope(Macro macro) { return new MacroScope(macro,this); } }