package nodeAST;
import java.util.Map;
import nodeAST.literals.Literal;
import nodeAST.literals.LiteralWithoutValue;
import types.Type;
import visitor.ASTVisitor;
import visitor.IdentifiersTypeMatcher;
public class Ident extends Expression {
protected String identifier;
public Ident(String identifier) {
super();
this.identifier=identifier;
}
public Type getType(IdentifiersTypeMatcher typeMatcher) {
return typeMatcher.getIdentType(this);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Ident))
return false;
Ident ident=(Ident) obj;
return this.identifier.equals(ident.identifier);
}
@Override
public void accept(ASTVisitor visitor) {
visitor.visit(this);
}
@Override
public String toString() {
return this.identifier;
}
@Override
public boolean containsTreeNode(Expression e) {
if(e.equals(this))
return true;
return false;
}
@Override
public boolean areOperandsTypeValid(IdentifiersTypeMatcher typeMatcher) {
return true;
}
@Override
public int hashCode() {
return this.identifier.hashCode();
}
@Override
public Literal compute(Map<Ident, Expression> identifiers) {
Expression e = identifiers.get(this);
if(e == null)
return new LiteralWithoutValue();
return e.compute(identifiers);
}
}