CommonIdentifierNode.java
package edu.udel.cis.vsl.abc.ast.node.common;
import java.io.PrintStream;
import edu.udel.cis.vsl.abc.ast.IF.DifferenceObject;
import edu.udel.cis.vsl.abc.ast.IF.DifferenceObject.DiffKind;
import edu.udel.cis.vsl.abc.ast.entity.IF.Entity;
import edu.udel.cis.vsl.abc.ast.node.IF.ASTNode;
import edu.udel.cis.vsl.abc.ast.node.IF.IdentifierNode;
import edu.udel.cis.vsl.abc.token.IF.Source;
public class CommonIdentifierNode extends CommonASTNode implements
IdentifierNode {
private String name;
private Entity entity;
public CommonIdentifierNode(Source source, String name) {
super(source);
this.name = name;
}
@Override
public void printBody(PrintStream out) {
out.print("Identifier[" + name + "]");
}
@Override
public String name() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public Entity getEntity() {
return entity;
}
@Override
public void setEntity(Entity entity) {
this.entity = entity;
}
@Override
public IdentifierNode copy() {
return new CommonIdentifierNode(getSource(), name);
}
@Override
public NodeKind nodeKind() {
return NodeKind.IDENTIFIER;
}
@Override
public DifferenceObject diffWork(ASTNode that) {
if (that instanceof IdentifierNode)
if (this.name.equals(((IdentifierNode) that).name()))
return null;
else
return new DifferenceObject(this, that,
DiffKind.IDENTIFIER_NAME);
return new DifferenceObject(this, that);
}
}