package nl.uva.polyql.ast.expressions.operations;
import nl.uva.polyql.ast.values.BooleanValue;
import nl.uva.polyql.ast.values.InvalidValue;
import nl.uva.polyql.ast.values.NumberValue;
import nl.uva.polyql.ast.values.StringValue;
import nl.uva.polyql.ast.values.Value;
import nl.uva.polyql.utils.SyntaxKey;
public abstract class BinaryOperator implements SyntaxKey {
public Value<?> performOperation(final BinaryOperation operation) {
return operation.getLeft().getValue().performOperationOnLeft(this, operation.getRight().getValue());
}
public Value<?> performOperation(final BooleanValue leftValue, final BooleanValue booleanValue) {
return new InvalidValue();
}
public Value<?> performOperation(final NumberValue leftValue, final NumberValue numberValue) {
return new InvalidValue();
}
public Value<?> performOperation(final StringValue leftValue, final NumberValue numberValue) {
return new InvalidValue();
}
public Value<?> performOperation(final NumberValue leftValue, final StringValue stringValue) {
return new InvalidValue();
}
public Value<?> performOperation(final StringValue leftValue, final StringValue stringValue) {
return new InvalidValue();
}
@Override
public String toString() {
return getSyntax();
}
}