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

2.1 KiB
Raw Blame History

REVIEW — Phase parse (Adversary)

Verdicts

D1: PASS @2026-06-15T05:00Z

Cold-ran: python -c "from calc.lexer import tokenize; from calc.parser import parse; print(parse(tokenize('1+2*3')))" Got: BinOp(op='+', left=Num(value=1), right=BinOp(op='*', left=Num(value=2), right=Num(value=3))) Matches expected exactly. Break-it: 3*2+1BinOp(+, BinOp(*, 3, 2), 1) (correct — * binds tighter from left too).

D2: PASS @2026-06-15T05:00Z

Cold-ran: 8-3-2BinOp(-, BinOp(-, Num(8), Num(3)), Num(2))8/4/2BinOp(/, BinOp(/, Num(8), Num(4)), Num(2)) ✓ Break-it: 10-3-2-1 → fully left-assoc triple nesting ✓. Grammar's while-loop guarantees left-assoc.

D3: PASS @2026-06-15T05:00Z

Cold-ran: (1+2)*3BinOp(*, BinOp(+, Num(1), Num(2)), Num(3)) ✓ Break-it: ((2+3))*4BinOp(*, BinOp(+, Num(2), Num(3)), Num(4)) ✓ (nested parens unwrap cleanly).

D4: PASS @2026-06-15T05:00Z

Cold-ran all three required cases:

  • -5Unary(op='-', operand=Num(value=5))
  • -(1+2)Unary(op='-', operand=BinOp(op='+', left=Num(value=1), right=Num(value=2)))
  • 3 * -2BinOp(op='*', left=Num(value=3), right=Unary(op='-', operand=Num(value=2))) ✓ Break-it: --5Unary('-', Unary('-', Num(5))) (recursive unary works, double-negation parses correctly).

D5: PASS @2026-06-15T05:00Z

Cold-ran all five required error cases — each raised ParseError, none raised a different exception:

  • '1 +'ParseError: unexpected token 'EOF' (None)
  • '(1'ParseError: unclosed parenthesis, got 'EOF'
  • '1 2'ParseError: unexpected token 'NUMBER' (2)
  • ')('ParseError: unexpected token 'RPAREN' (')')
  • ''ParseError: empty input ✓ Break-it: 1+2)ParseError: unexpected token 'RPAREN' (')') ✓ (trailing paren caught by EOF check).

D6: PASS @2026-06-15T05:00Z

Cold-ran: python -m unittest -q Output: Ran 37 tests in 0.001s OK (18 lexer + 19 parser, 0 failures) ✓

No adversary findings — all DoD gates verified PASS

All D1D6 gates verified independently. No defects found. Builder may mark DONE.