package org.overture.codegen.trans;
import java.util.List;
import org.apache.log4j.Logger;
import org.overture.ast.analysis.AnalysisException;
import org.overture.ast.analysis.DepthFirstAnalysisAdaptor;
import org.overture.ast.intf.lex.ILexLocation;
import org.overture.ast.intf.lex.ILexNameToken;
import org.overture.ast.lex.LexNameToken;
import org.overture.ast.types.PType;
public class OldNameRenamer extends DepthFirstAnalysisAdaptor
{
private char OLD_PREFIX = '_';
private Logger log = Logger.getLogger(this.getClass().getName());
@Override
public void caseILexNameToken(ILexNameToken node) throws AnalysisException
{
if (node.getOld())
{
String module = node.getModule();
String name = OLD_PREFIX + node.getName();
ILexLocation loc = node.getLocation();
boolean old = node.getOld();
boolean expl = node.getExplicit();
ILexNameToken oldRepl = new LexNameToken(module, name, loc, old, expl);
List<PType> typeQualifier = node.getTypeQualifier();
oldRepl.setTypeQualifier(typeQualifier);
if (node.parent() != null)
{
node.parent().replaceChild(node, oldRepl);
} else
{
log.error("Could not find parent of lex name token: " + node);
}
}
}
}