Search in sources :

Example 11 with Expr

use of org.batfish.z3.expr.Expr in project batfish by batfish.

the class ExprPrinter method visitAndExpr.

@Override
public void visitAndExpr(AndExpr andExpr) {
    List<Expr> subExpressions = ImmutableList.<Expr>builder().add(new IdExpr("and")).addAll(andExpr.getConjuncts()).build();
    printExpandedComplexExpr(subExpressions);
}
Also used : PrefixMatchExpr(org.batfish.z3.expr.PrefixMatchExpr) OrExpr(org.batfish.z3.expr.OrExpr) TrueExpr(org.batfish.z3.expr.TrueExpr) ExtractExpr(org.batfish.z3.expr.ExtractExpr) StateExpr(org.batfish.z3.expr.StateExpr) HeaderSpaceMatchExpr(org.batfish.z3.expr.HeaderSpaceMatchExpr) IfExpr(org.batfish.z3.expr.IfExpr) Expr(org.batfish.z3.expr.Expr) BitVecExpr(org.batfish.z3.expr.BitVecExpr) FalseExpr(org.batfish.z3.expr.FalseExpr) IpSpaceMatchExpr(org.batfish.z3.expr.IpSpaceMatchExpr) NotExpr(org.batfish.z3.expr.NotExpr) VarIntExpr(org.batfish.z3.expr.VarIntExpr) SaneExpr(org.batfish.z3.expr.SaneExpr) AndExpr(org.batfish.z3.expr.AndExpr) LitIntExpr(org.batfish.z3.expr.LitIntExpr) CurrentIsOriginalExpr(org.batfish.z3.expr.CurrentIsOriginalExpr) EqExpr(org.batfish.z3.expr.EqExpr) RangeMatchExpr(org.batfish.z3.expr.RangeMatchExpr) IdExpr(org.batfish.z3.expr.IdExpr) ListExpr(org.batfish.z3.expr.ListExpr) IdExpr(org.batfish.z3.expr.IdExpr)

Example 12 with Expr

use of org.batfish.z3.expr.Expr in project batfish by batfish.

the class ExprPrinter method printExpandedComplexExpr.

private void printExpandedComplexExpr(List<Expr> subExpressions) {
    _sb.append("(");
    int size = subExpressions.size();
    if (size > 0) {
        printExpr(subExpressions.get(0));
        for (int i = 1; i < size; i++) {
            _sb.append("\n");
            for (int j = 0; j <= _indent; j++) {
                _sb.append(" ");
            }
            printExpr(subExpressions.get(i), _indent + 1);
        }
        Expr lastSubExpression = subExpressions.get(size - 1);
        if (IsComplexVisitor.isComplexExpr(lastSubExpression)) {
            _sb.append(" ");
        }
    }
    _sb.append(")");
}
Also used : PrefixMatchExpr(org.batfish.z3.expr.PrefixMatchExpr) OrExpr(org.batfish.z3.expr.OrExpr) TrueExpr(org.batfish.z3.expr.TrueExpr) ExtractExpr(org.batfish.z3.expr.ExtractExpr) StateExpr(org.batfish.z3.expr.StateExpr) HeaderSpaceMatchExpr(org.batfish.z3.expr.HeaderSpaceMatchExpr) IfExpr(org.batfish.z3.expr.IfExpr) Expr(org.batfish.z3.expr.Expr) BitVecExpr(org.batfish.z3.expr.BitVecExpr) FalseExpr(org.batfish.z3.expr.FalseExpr) IpSpaceMatchExpr(org.batfish.z3.expr.IpSpaceMatchExpr) NotExpr(org.batfish.z3.expr.NotExpr) VarIntExpr(org.batfish.z3.expr.VarIntExpr) SaneExpr(org.batfish.z3.expr.SaneExpr) AndExpr(org.batfish.z3.expr.AndExpr) LitIntExpr(org.batfish.z3.expr.LitIntExpr) CurrentIsOriginalExpr(org.batfish.z3.expr.CurrentIsOriginalExpr) EqExpr(org.batfish.z3.expr.EqExpr) RangeMatchExpr(org.batfish.z3.expr.RangeMatchExpr) IdExpr(org.batfish.z3.expr.IdExpr) ListExpr(org.batfish.z3.expr.ListExpr)

Example 13 with Expr

use of org.batfish.z3.expr.Expr in project batfish by batfish.

the class IpSpaceBooleanExprTransformer method visitAclIpSpace.

@Override
public BooleanExpr visitAclIpSpace(AclIpSpace aclIpSpace) {
    // right fold
    BooleanExpr expr = FalseExpr.INSTANCE;
    for (int i = aclIpSpace.getLines().size() - 1; i >= 0; i--) {
        AclIpSpaceLine line = aclIpSpace.getLines().get(i);
        expr = new IfThenElse(line.getIpSpace().accept(this), line.getAction() == LineAction.ACCEPT ? TrueExpr.INSTANCE : FalseExpr.INSTANCE, expr);
    }
    return expr;
}
Also used : AclIpSpaceLine(org.batfish.datamodel.AclIpSpaceLine) IfThenElse(org.batfish.z3.expr.IfThenElse) BooleanExpr(org.batfish.z3.expr.BooleanExpr)

Aggregations

BooleanExpr (org.batfish.z3.expr.BooleanExpr)8 Test (org.junit.Test)8 AndExpr (org.batfish.z3.expr.AndExpr)5 HeaderSpaceMatchExpr (org.batfish.z3.expr.HeaderSpaceMatchExpr)5 NotExpr (org.batfish.z3.expr.NotExpr)5 PrefixMatchExpr (org.batfish.z3.expr.PrefixMatchExpr)5 StateExpr (org.batfish.z3.expr.StateExpr)5 BitVecExpr (org.batfish.z3.expr.BitVecExpr)4 CurrentIsOriginalExpr (org.batfish.z3.expr.CurrentIsOriginalExpr)4 EqExpr (org.batfish.z3.expr.EqExpr)4 Expr (org.batfish.z3.expr.Expr)4 ExtractExpr (org.batfish.z3.expr.ExtractExpr)4 FalseExpr (org.batfish.z3.expr.FalseExpr)4 IdExpr (org.batfish.z3.expr.IdExpr)4 IfExpr (org.batfish.z3.expr.IfExpr)4 IpSpaceMatchExpr (org.batfish.z3.expr.IpSpaceMatchExpr)4 ListExpr (org.batfish.z3.expr.ListExpr)4 LitIntExpr (org.batfish.z3.expr.LitIntExpr)4 OrExpr (org.batfish.z3.expr.OrExpr)4 RangeMatchExpr (org.batfish.z3.expr.RangeMatchExpr)4