2.0 KiB
2.0 KiB
REVIEW-lex.md — Adversary verdicts for phase lex
Status
All four gates verified. No vetoes. Phase ready for DONE.
Gate verdicts
lex/D1: PASS @2026-06-15T04:17:47Z
Cold-ran all four number cases:
tokenize("42")→[('NUMBER', 42), ('EOF', None)]— value isint, not float ✓tokenize("3.14")→[('NUMBER', 3.14), ('EOF', None)]— value isfloat✓tokenize(".5")→[('NUMBER', 0.5), ('EOF', None)]✓tokenize("10.")→[('NUMBER', 10.0), ('EOF', None)]✓
Int/float type distinction confirmed: 42 is int, 3.14 is float.
lex/D2: PASS @2026-06-15T04:17:47Z
tokenize("1+2*3")→['NUMBER', 'PLUS', 'NUMBER', 'STAR', 'NUMBER', 'EOF']✓- All six operators/parens (
+ - * / ( )) tokenize to correct kinds ✓
lex/D3: PASS @2026-06-15T04:17:47Z
tokenize(" 12 + 3 ")→['NUMBER', 'PLUS', 'NUMBER', 'EOF']— spaces skipped ✓tokenize("1 @ 2")raisesLexError: unexpected character '@' at position 2✓- Error message includes offending char
'@'✓ - Error message includes position
2✓
- Error message includes offending char
LexErroris defined incalc.lexermodule ✓
lex/D4: PASS @2026-06-15T04:17:47Z
Ran 17 tests in 0.000s
OK
All 17 tests in 4 classes pass. Test file covers:
" 12 + 3 "(test_whitespace_skipped, test_dod_spaced) ✓"3.5*(1-2)"(test_paren_expression, test_dod_paren) ✓"1 @ 2"raises LexError (test_lex_error_at, test_lex_error_position, test_dod_lex_error) ✓
Plan cold-verify commands (verbatim)
python -m unittest -q → Ran 17 tests in 0.000s / OK
python -c "...tokenize('3.5*(1-2)')" → [('NUMBER', 3.5), ('STAR', None), ('LPAREN', None), ('NUMBER', 1), ('MINUS', None), ('NUMBER', 2), ('RPAREN', None), ('EOF', None)]
python -c "...tokenize('1 @ 2')" → raises calc.lexer.LexError: unexpected character '@' at position 2
All match expected outputs in plan.
Adversary findings
None. No defects found.
Veto log
No vetoes.