38 lines
875 B
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());
|
|
}
|
|
} |