diff options
author | Jon Dufresne <jon.dufresne@gmail.com> | 2019-10-31 21:10:28 -0700 |
---|---|---|
committer | Paul McGuire <ptmcg@users.noreply.github.com> | 2019-10-31 23:10:28 -0500 |
commit | 53d1b4a6f48a53c4c4ec4ac7031362b691c0366d (patch) | |
tree | 088ad3cf3561b78a00af4fb2fd474f4a2b8ca70c /examples/simpleBool.py | |
parent | 41752aa52cc97c710474bb2972cceab057b52ad4 (diff) | |
download | pyparsing-git-53d1b4a6f48a53c4c4ec4ac7031362b691c0366d.tar.gz |
Blacken the project (#141)
Diffstat (limited to 'examples/simpleBool.py')
-rw-r--r-- | examples/simpleBool.py | 68 |
1 files changed, 41 insertions, 27 deletions
diff --git a/examples/simpleBool.py b/examples/simpleBool.py index 81f5049..f47e090 100644 --- a/examples/simpleBool.py +++ b/examples/simpleBool.py @@ -17,84 +17,98 @@ from pyparsing import infixNotation, opAssoc, Keyword, Word, alphas # define classes to be built at parse time, as each matching
# expression type is parsed
class BoolOperand:
- def __init__(self,t):
+ def __init__(self, t):
self.label = t[0]
self.value = eval(t[0])
+
def __bool__(self):
return self.value
+
def __str__(self):
return self.label
+
__repr__ = __str__
class BoolBinOp:
- def __init__(self,t):
+ def __init__(self, t):
self.args = t[0][0::2]
+
def __str__(self):
sep = " %s " % self.reprsymbol
- return "(" + sep.join(map(str,self.args)) + ")"
+ return "(" + sep.join(map(str, self.args)) + ")"
+
def __bool__(self):
return self.evalop(bool(a) for a in self.args)
+
__nonzero__ = __bool__
class BoolAnd(BoolBinOp):
- reprsymbol = '&'
+ reprsymbol = "&"
evalop = all
+
class BoolOr(BoolBinOp):
- reprsymbol = '|'
+ reprsymbol = "|"
evalop = any
+
class BoolNot:
- def __init__(self,t):
+ def __init__(self, t):
self.arg = t[0][1]
+
def __bool__(self):
v = bool(self.arg)
return not v
+
def __str__(self):
return "~" + str(self.arg)
+
__repr__ = __str__
TRUE = Keyword("True")
FALSE = Keyword("False")
-boolOperand = TRUE | FALSE | Word(alphas,max=1)
+boolOperand = TRUE | FALSE | Word(alphas, max=1)
boolOperand.setParseAction(BoolOperand)
# define expression, based on expression operand and
# list of operations in precedence order
-boolExpr = infixNotation( boolOperand,
+boolExpr = infixNotation(
+ boolOperand,
[
- ("not", 1, opAssoc.RIGHT, BoolNot),
- ("and", 2, opAssoc.LEFT, BoolAnd),
- ("or", 2, opAssoc.LEFT, BoolOr),
- ])
+ ("not", 1, opAssoc.RIGHT, BoolNot),
+ ("and", 2, opAssoc.LEFT, BoolAnd),
+ ("or", 2, opAssoc.LEFT, BoolOr),
+ ],
+)
if __name__ == "__main__":
p = True
q = False
r = True
- tests = [("p", True),
- ("q", False),
- ("p and q", False),
- ("p and not q", True),
- ("not not p", True),
- ("not(p and q)", True),
- ("q or not p and r", False),
- ("q or not p or not r", False),
- ("q or not (p and r)", False),
- ("p or q or r", True),
- ("p or q or r and False", True),
- ("(p or q or r) and False", False),
- ]
+ tests = [
+ ("p", True),
+ ("q", False),
+ ("p and q", False),
+ ("p and not q", True),
+ ("not not p", True),
+ ("not(p and q)", True),
+ ("q or not p and r", False),
+ ("q or not p or not r", False),
+ ("q or not (p and r)", False),
+ ("p or q or r", True),
+ ("p or q or r and False", True),
+ ("(p or q or r) and False", False),
+ ]
print("p =", p)
print("q =", q)
print("r =", r)
print()
- for t,expected in tests:
+ for t, expected in tests:
res = boolExpr.parseString(t)[0]
success = "PASS" if bool(res) == expected else "FAIL"
- print (t,'\n', res, '=', bool(res),'\n', success, '\n')
+ print(t, "\n", res, "=", bool(res), "\n", success, "\n")
|