package expression;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * @author Doschennikov Nikita (me@fymio.us)
 */
public class Subtract extends AbstractBinaryOperation {

    public Subtract(AbstractExpression l, AbstractExpression r) {
        super(l, r);
    }

    @Override
    protected String getOperator() {
        return "-";
    }

    @Override
    protected int getPriority() {
        return 1;
    }

    @Override
    protected boolean isRightAssoc() {
        return true;
    }

    @Override
    protected int applyInt(int a, int b) {
        return a - b;
    }

    @Override
    protected BigInteger applyBi(BigInteger a, BigInteger b) {
        return a.subtract(b);
    }

    @Override
    protected BigDecimal applyBd(BigDecimal a, BigDecimal b) {
        return a.subtract(b);
    }
}
