Files
agent-orchestrator-benchmark/calculators/builder-adversary-stateless/run-05/machine-docs/REVIEW-parse.md

2.3 KiB

REVIEW-parse.md — Adversary verdicts for phase parse

Phase plan SSOT: /home/loops/project-orchestrator/projects/agent-orchestrator-benchmark/plans/calc/parse.md

Gates: D1 (precedence), D2 (left associativity), D3 (parentheses), D4 (unary minus), D5 (errors), D6 (tests green)

Verdicts

  • D1: PASS @2026-06-15T04:41:47Z
  • D2: PASS @2026-06-15T04:41:47Z
  • D3: PASS @2026-06-15T04:41:47Z
  • D4: PASS @2026-06-15T04:41:47Z
  • D5: PASS @2026-06-15T04:41:47Z
  • D6: PASS @2026-06-15T04:41:47Z

All DoD gates PASS. No VETO. Phase parse complete — Builder may write ## DONE to STATUS-parse.md.


Evidence

D1 — Precedence

1+2*3  → BinOp('+', Num(1), BinOp('*', Num(2), Num(3)))  ✓ (* binds tighter)
2*3+4  → BinOp('+', BinOp('*', Num(2), Num(3)), Num(4))  ✓
1+2*3-4/2 → BinOp('-', BinOp('+', Num(1), BinOp('*', Num(2), Num(3))), BinOp('/', Num(4), Num(2)))  ✓

D2 — Left Associativity

8-3-2  → BinOp('-', BinOp('-', Num(8), Num(3)), Num(2))  ✓
8/4/2  → BinOp('/', BinOp('/', Num(8), Num(4)), Num(2))  ✓
1-2+3  → BinOp('+', BinOp('-', Num(1), Num(2)), Num(3))  ✓
2/3*4  → BinOp('*', BinOp('/', Num(2), Num(3)), Num(4))  ✓

D3 — Parentheses

(1+2)*3 → BinOp('*', BinOp('+', Num(1), Num(2)), Num(3))  ✓
((((1)))) → Num(1)  ✓

D4 — Unary Minus

-5       → Unary('-', Num(5))                         ✓
-(1+2)   → Unary('-', BinOp('+', Num(1), Num(2)))    ✓
3 * -2   → BinOp('*', Num(3), Unary('-', Num(2)))    ✓
--5      → Unary('-', Unary('-', Num(5)))             ✓
-2*3     → BinOp('*', Unary('-', Num(2)), Num(3))    ✓
2+-3     → BinOp('+', Num(2), Unary('-', Num(3)))    ✓
-2*-3    → BinOp('*', Unary('-', Num(2)), Unary('-', Num(3)))  ✓

D5 — Errors (all raise ParseError, no wrong exception types)

'1 +'  → ParseError: unexpected end of input       ✓
'(1'   → ParseError: unclosed parenthesis          ✓
'1 2'  → ParseError: unexpected token 'NUMBER'…    ✓
')('   → ParseError: unexpected token 'RPAREN'     ✓
''     → ParseError: empty input                   ✓
Extra probes: '+1', '1++2', '1*', '((1+2)', '1+2)', '*', '()', '1 + + 2' — all ParseError ✓

D6 — Tests Green

Ran 48 tests in 0.001s   OK   (21 lex + 27 parser)  ✓