diff --git a/wizard-work/beam/safe_eval.py b/wizard-work/beam/safe_eval.py index ce162d9..4230a9f 100644 --- a/wizard-work/beam/safe_eval.py +++ b/wizard-work/beam/safe_eval.py @@ -164,7 +164,7 @@ class _Parser: def factor(self): if self.peek()[0] == _OP and self.peek()[1] in ("+", "-"): op = self.advance()[1] - val = self.power() # unary lower precedence than ** (python semantics) + val = self.factor() # recurse so chained signs (--2, +--3) parse return -val if op == "-" else val return self.power()