package nl.uva.polyql.ast.expressions.operators; import nl.uva.polyql.ast.expressions.operations.BinaryOperator; import nl.uva.polyql.ast.values.NumberValue; import nl.uva.polyql.ast.values.StringValue; import nl.uva.polyql.ast.values.Value; public class Add extends BinaryOperator { public static final String SYNTAX = "+"; @Override public String getSyntax() { return SYNTAX; } @Override public Value<?> performOperation(final NumberValue left, final NumberValue right) { return new NumberValue(left.getValue() + right.getValue()); } @Override public Value<?> performOperation(final StringValue left, final StringValue right) { return new StringValue(left.getValue() + right.getValue()); } @Override public Value<?> performOperation(final StringValue left, final NumberValue right) { return new StringValue(left.getValue() + right.getValue()); } @Override public Value<?> performOperation(final NumberValue left, final StringValue right) { return new StringValue(left.getValue() + right.getValue()); } }