📄 standardizevars.java
字号:
package com.sri.oaa2.icl;
import java.util.*;
public class StandardizeVars implements OaaPrologVisitor
{
/// Our singleton instance
private static final StandardizeVars singleton = new StandardizeVars();
protected StandardizeVars()
{
}
public Object visit(IclTerm node, Object data)
{
node.childrenAccept(this, data);
return null;
}
public Object visit(IclStruct node, Object data)
{
node.childrenAccept(this, data);
return null;
}
public Object visit(IclList node, Object data)
{
node.childrenAccept(this, data);
return null;
}
public Object visit(IclGroup node, Object data)
{
node.childrenAccept(this, data);
return null;
}
public Object visit(IclInt node, Object data)
{
return null;
}
public Object visit(IclFloat node, Object data)
{
return null;
}
public Object visit(IclStr node, Object data)
{
return null;
}
public Object visit(IclVar node, Object data)
{
StandardizeVarsData d = (StandardizeVarsData)data;
String oldName = node.getName();
if(d.mappings.containsKey(oldName)) {
node.setName((String)d.mappings.get(oldName));
}
else {
StringBuffer newNameBuf = new StringBuffer("_");
newNameBuf.append(Long.toString(d.value));
++d.value;
String newName = newNameBuf.toString();
node.setName(newName);
d.mappings.put(oldName, newName);
}
return null;
}
/**
* Get an instance of a StandardizeVars object. This avoids multiple calls to the constructor.
* StandardizeVars is thread safe.
*/
public static StandardizeVars getInstance()
{
return singleton;
}
/**
* Make an IclTerm readonly. This will also make all its children readonly.
*
* @param IclTerm t: the term to convert
* @return IclTerm: t as a readonly object
*/
public IclTerm from(IclTerm t)
{
t.accept(this, new StandardizeVarsData());
return t;
}
}
class StandardizeVarsData
{
protected long value = 0;
protected HashMap mappings = new HashMap();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -