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);
	}
}