public static Statement cond(Expr predicate, List<Statement> consequent, List<Statement> alternative) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(predicate); statement.getConsequent().addAll(consequent); statement.getAlternative().addAll(alternative); return statement; }
private void normalizeConditional(ConditionalStatement stmt) { if (stmt.getConsequent().isEmpty()) { stmt.getConsequent().addAll(stmt.getAlternative()); stmt.getAlternative().clear(); stmt.setCondition(ExprOptimizer.invert(stmt.getCondition())); } }
@Override public void visit(ConditionalStatement statement) { statement.getCondition().acceptVisitor(this); statement.setCondition(optimizeCondition(resultExpr)); List<Statement> consequent = processSequence(statement.getConsequent()); List<Statement> alternative = processSequence(statement.getAlternative()); if (consequent.isEmpty()) { consequent.addAll(alternative); alternative.clear(); statement.setCondition(ExprOptimizer.invert(statement.getCondition())); } if (consequent.isEmpty()) { SequentialStatement sequentialStatement = new SequentialStatement(); resultStmt = sequentialStatement; statement.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer( sequentialStatement.getSequence())); return; } statement.getConsequent().clear(); statement.getConsequent().addAll(consequent); statement.getAlternative().clear(); statement.getAlternative().addAll(alternative); Statement asConditional = tryConvertToConditionalExpression(statement); if (asConditional != null) { asConditional.acceptVisitor(this); } else { resultStmt = statement; } }
@Override public void visit(ConditionalExpr expr) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(expr.getCondition()); expr.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getConsequent())); expr.getAlternative().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getAlternative())); target.add(statement); } @Override
cond.getConsequent().clear(); cond.getConsequent().addAll(innerCond.getConsequent()); cond.setCondition(Expr.binary(BinaryOperation.AND, null, cond.getCondition(), innerCond.getCondition(), cond.getCondition().getLocation())); --i; } else if (cond.getAlternative().size() != 1 || !(cond.getAlternative().get(0) instanceof ConditionalStatement)) { cond.setCondition(ExprOptimizer.invert(cond.getCondition())); cond.getConsequent().clear(); cond.getConsequent().addAll(cond.getAlternative());
stmt.setCondition(readExpr(input)); readSequence(input, stmt.getConsequent()); readSequence(input, stmt.getAlternative());
public static Statement cond(Expr predicate, List<Statement> consequent, List<Statement> alternative) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(predicate); statement.getConsequent().addAll(consequent); statement.getAlternative().addAll(alternative); return statement; }
private void normalizeConditional(ConditionalStatement stmt) { if (stmt.getConsequent().isEmpty()) { stmt.getConsequent().addAll(stmt.getAlternative()); stmt.getAlternative().clear(); stmt.setCondition(ExprOptimizer.invert(stmt.getCondition())); } }
@Override public void visit(ConditionalStatement statement) { statement.getCondition().acceptVisitor(this); statement.setCondition(resultExpr); List<Statement> consequent = processSequence(statement.getConsequent()); List<Statement> alternative = processSequence(statement.getAlternative()); if (consequent.isEmpty()) { consequent.addAll(alternative); alternative.clear(); statement.setCondition(ExprOptimizer.invert(statement.getCondition())); } if (consequent.isEmpty()) { SequentialStatement sequentialStatement = new SequentialStatement(); resultStmt = sequentialStatement; statement.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer( sequentialStatement.getSequence())); return; } statement.getConsequent().clear(); statement.getConsequent().addAll(consequent); statement.getAlternative().clear(); statement.getAlternative().addAll(alternative); Statement asConditional = tryConvertToConditionalExpression(statement); if (asConditional != null) { asConditional.acceptVisitor(this); } else { resultStmt = statement; } }
@Override public void visit(ConditionalExpr expr) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(expr.getCondition()); expr.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getConsequent())); expr.getAlternative().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getAlternative())); target.add(statement); } @Override
cond.getConsequent().clear(); cond.getConsequent().addAll(innerCond.getConsequent()); cond.setCondition(Expr.binary(BinaryOperation.AND, null, cond.getCondition(), innerCond.getCondition(), cond.getCondition().getLocation())); --i; } else if (cond.getAlternative().size() != 1 || !(cond.getAlternative().get(0) instanceof ConditionalStatement)) { cond.setCondition(ExprOptimizer.invert(cond.getCondition())); cond.getConsequent().clear(); cond.getConsequent().addAll(cond.getAlternative());
stmt.setCondition(readExpr(input)); readSequence(input, stmt.getConsequent()); readSequence(input, stmt.getAlternative());