Skip to main content

cs2370 Notes: 28 Boolean Expressions

··1 min

Boolean Expression Review:

  • Three operations
  • Symbols: ab+b!c, parens
class Expr:
    pass


class Var(Expr):
    def __init__(self, name):
        self.name = name

    def eval(self, bindings):
        return bindings[self.name]


def test_Var():
    v1 = Var("a")
    v2 = Var("b")
    assert v1.eval({"a": True, "b": False}) == True
    assert v2.eval({"a": True, "b": False}) == False


class And(Expr):
    def __init__(self, exprs):
        self.exprs = exprs

    def eval(self, bindings):
        for ex in exprs:
            if not ex.eval():
                return False
        return True


class Or(Expr):
    def __init__(self, exprs):
        self.exprs = exprs

    def eval(self, bindings):
        for ex in exprs:
            if ex.eval():
                return True
        return False


class Not(Expr):
    def __init__(self, expr):
        self.expr = exprs

    def eval(self, bindings):
        return not self.expr.eval()

    def __repr__(self):
        return f"!()"