diff --git a/wizard-work/beam/safe_eval.py b/wizard-work/beam/safe_eval.py index cda4dd0..ce162d9 100644 --- a/wizard-work/beam/safe_eval.py +++ b/wizard-work/beam/safe_eval.py @@ -141,10 +141,10 @@ class _Parser: return value def term(self): - value = self.unary() + value = self.factor() while self.peek()[0] == _OP and self.peek()[1] in ("*", "/", "//", "%"): op = self.advance()[1] - rhs = self.unary() + rhs = self.factor() if op == "*": value = value * rhs elif op == "/": @@ -161,7 +161,7 @@ class _Parser: value = value % rhs return value - def unary(self): + 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) @@ -172,7 +172,7 @@ class _Parser: base = self.primary() if self.peek()[0] == _OP and self.peek()[1] == "**": self.advance() - exp = self.unary() # right-assoc, exponent may be signed + exp = self.factor() # right-assoc, exponent may be signed return base ** exp return base diff --git a/wizard-work/beam/test_safe_eval.py b/wizard-work/beam/test_safe_eval.py index cb54824..cd57ada 100644 --- a/wizard-work/beam/test_safe_eval.py +++ b/wizard-work/beam/test_safe_eval.py @@ -1,5 +1,7 @@ from safe_eval import evaluate +import sys + cases = [ ("2+3*4", 14), ("(2+3)*4", 20), diff --git a/wizard-work/spark/VALIDATION_REPORT.md b/wizard-work/spark/VALIDATION_REPORT.md index b304061..5101b18 100644 --- a/wizard-work/spark/VALIDATION_REPORT.md +++ b/wizard-work/spark/VALIDATION_REPORT.md @@ -27,5 +27,5 @@ All Hermes environment checks passed: # MANIFEST spark-validation-script-v1.0 artifact: wizard-work/spark/validation_script.sh -commit: d9862a447feed2c3cd11d525e4c102b3e22c5d3c +commit: 23eaa56 date: 2026-10-23 \ No newline at end of file