package nl.uva.sc.encoders.ql.ast.expression;
import java.util.Set;
import nl.uva.sc.encoders.ql.ast.TextLocation;
import nl.uva.sc.encoders.ql.ast.operator.UnaryOperator;
import nl.uva.sc.encoders.ql.ast.type.DataType;
import nl.uva.sc.encoders.ql.ast.type.TypeMap;
import nl.uva.sc.encoders.ql.visitor.ExpressionVisitor;
public class UnaryExpression extends Expression {
private final UnaryOperator operator;
private final Expression expression;
public UnaryExpression(TextLocation textLocation, UnaryOperator operator, Expression expression) {
super(textLocation);
this.operator = operator;
this.expression = expression;
}
public Expression getExpression() {
return expression;
}
public UnaryOperator getOperator() {
return operator;
}
@Override
public <T> T accept(ExpressionVisitor<T> visitor) {
return visitor.visit(this);
}
@Override
public void collectQuestionNames(Set<String> relatedQuestionNames) {
expression.collectQuestionNames(relatedQuestionNames);
}
@Override
public DataType getType(TypeMap typeMap) {
return expression.getType(typeMap);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append(operator);
builder.append(" ");
builder.append(expression);
return builder.toString();
}
}