package org.uva.sea.ql.ast;
import org.uva.sea.ql.ast.type.Type;
import org.uva.sea.ql.typechecker.TypeEnvironment;
public class Identifier extends Expression {
private final String name;
public Identifier(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
public String toString(){
return name;};
@Override
public <T> T accept(ExpressionVisitor<T> visitor) {
return visitor.visit(this);
}
@Override
public Type typeOf(TypeEnvironment environment){
assert (environment.isDeclared(this));
return environment.ofType(this);
}
@Override
public boolean equals(Object other) {
if (other instanceof Identifier) {
return name.equals(((Identifier) other).getName());
}
return false;
}
@Override
public int hashCode(){
return name.hashCode();
}
}