Files
JEF/src/main/java/jef/expressions/modifier/TernaryRewriter.java
2022-07-14 18:05:03 +02:00

24 lines
844 B
Java

package jef.expressions.modifier;
import jef.expressions.AndExpression;
import jef.expressions.Expression;
import jef.expressions.OrExpression;
import jef.expressions.TernaryExpression;
import jef.expressions.UnaryExpression;
public class TernaryRewriter extends ExpressionModifier {
@Override
public Expression modifyTernary(TernaryExpression expr) {
//first optimize
var newExpr = TernaryOptimizerUtil.optimizeTernary(expr);
if (!(newExpr instanceof TernaryExpression)) {
return modify(newExpr);
}
expr = (TernaryExpression) newExpr;
//rewrite
return modify(new OrExpression(new AndExpression(expr.getCond(), expr.getWhenTrue()),
new AndExpression(new UnaryExpression(expr.getCond(), UnaryExpression.Operator.NOT), expr.getWhenFalse())));
}
}