package org.overture.codegen.analysis.vdm;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.overture.ast.analysis.AnalysisException;
import org.overture.ast.definitions.PDefinition;
import org.overture.ast.node.INode;
import org.overture.ast.statements.AIdentifierStateDesignator;
import org.overture.typechecker.assistant.ITypeCheckerAssistantFactory;
public class VarRenamer
{
public void rename(INode node, Set<Renaming> renamings)
throws AnalysisException
{
node.apply(new RenameAnalysis(renamings));
}
public Set<Renaming> computeRenamings(List<? extends INode> nodes,
ITypeCheckerAssistantFactory af,
Map<AIdentifierStateDesignator, PDefinition> idDefs)
throws AnalysisException
{
VarShadowingRenameCollector renamer = new VarShadowingRenameCollector(af, idDefs);
for (INode node : nodes)
{
node.apply(renamer);
renamer.init(false);
}
return renamer.getRenamings();
}
public Set<Renaming> computeRenamings(INode node,
VarShadowingRenameCollector collector) throws AnalysisException
{
collector.init(true);
node.apply(collector);
return collector.getRenamings();
}
}