nus/cs2030s/labs/Lab6/Or.java

38 lines
875 B
Java

/**
* Represents the Or type, a conditional which returns true if either value is
* true. This operator short circuits, which means that if the left value is
* true, the right value is not evaluated
*/
class Or implements Cond {
private Cond lVal;
private Cond rVal;
/**
* Constructor for the Or conditional.
*
* @param lVal the left value in the Or Operation.
* @param rVal This is only evaluated if lVal is false
*/
public Or(Cond lVal, Cond rVal) {
this.lVal = lVal;
this.rVal = rVal;
}
@Override
public boolean eval() {
if (this.lVal.eval()) {
return true;
}
return this.rVal.eval();
}
@Override
public String toString() {
return "(" + this.lVal + " | " + this.rVal + ")";
}
@Override
public Cond neg() {
return new And(lVal.neg(), rVal.neg());
}
}