package uva.ql.ast.expressions.literals; import java.util.Arrays; import java.util.List; import uva.ql.ast.CodeLines; import uva.ql.ast.type.Type; import uva.ql.ast.type.TypeString; import uva.ql.ast.value.GenericValue; import uva.ql.ast.value.StringValue; import uva.ql.ast.expression.evaluation.ValueTable; import uva.ql.ast.visitor.ExpressionVisitor; public class Identifier extends Literal{ private String identifier; public Identifier(String _identifier, CodeLines _codeLines){ super(_codeLines); this.identifier = _identifier; } public GenericValue<?> getValueFromValueTable(ValueTable valueTable){ return valueTable.getValue(this.identifier); } @Override public String getValue() { return this.identifier; } @Override public StringValue evaluate() { return new StringValue(this.identifier); } @Override public List<Type> possibleReturnTypes() { return Arrays.asList(new TypeString()); } @Override public List<Type> acceptedTypes() { return null; } @Override public <T> T accept(ExpressionVisitor<T> visitor) { return visitor.visitIdentifier(this); } @Override public boolean equals(Object obj){ if (obj == null){ return false; } return ((Identifier)obj).identifier.equals(this.identifier); } @Override public CodeLines getLinesOfCode() { return this.codeLines; } @Override public String toString() { return "Identifier(" + this.identifier + ")"; } }