beam: fix ** associativity in safe_eval (2**3**2=512) and add missing sys import in test

This commit is contained in:
beam committed 2026-10-23 17:15:45 +00:00
1 parent 9fa068195e
commit 849ac67e5e
3 files changed
+7 -5

No files matched your search

+4 -4
View File
@@ -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
+2
View File
@@ -1,5 +1,7 @@
from safe_eval import evaluate
import sys
cases = [
("2+3*4", 14),
("(2+3)*4", 20),
+1 -1
View File
@@ -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