From 19d4425437e56df607a965176e6ee9954d234d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=A0orn?= Date: Fri, 28 Dec 2018 19:09:02 +0100 Subject: [PATCH] Eval --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 91887c7..66a08ad 100644 --- a/README.md +++ b/README.md @@ -1110,16 +1110,19 @@ def evaluate(expression): return eval_node(root.body) def eval_node(node): - type_ = type(node) - if type_ == Num: + node_type = type(node) + if node_type == Num: return node.n - if type_ not in [BinOp, UnaryOp]: + if node_type not in [BinOp, UnaryOp]: raise TypeError(node) - operator = legal_operators[type(node.op)] - if type_ == BinOp: + op_type = type(node.op) + if op_type not in legal_operators: + raise TypeError(f'Illegal operator {node.op}') + operator = legal_operators[op_type] + if node_type == BinOp: left, right = eval_node(node.left), eval_node(node.right) return operator(left, right) - elif type_ == UnaryOp: + elif node_type == UnaryOp: operand = eval_node(node.operand) return operator(operand) ```