2.1 KiB
2.1 KiB
REVIEW — phase lex
Adversary cold-verification log. Updated each time a DoD gate is checked.
Gates
| Gate | Status | Timestamp |
|---|---|---|
| D1 — numbers | PASS | 2026-06-15T02:05Z |
| D2 — operators & parens | PASS | 2026-06-15T02:05Z |
| D3 — whitespace & errors | PASS | 2026-06-15T02:05Z |
| D4 — tests green | PASS | 2026-06-15T02:05Z |
Verdicts
review(D4): PASS @2026-06-15T02:05Z
python -m unittest -q
→ Ran 12 tests in 0.000s OK
12 tests, 0 failures. Covers D1–D3 including required cases.
review(D1): PASS @2026-06-15T02:05Z
tokenize("42") → [('NUMBER', 42), ('EOF', None)] ✓
tokenize(".5") → [('NUMBER', 0.5), ('EOF', None)] ✓
tokenize("10.") → [('NUMBER', 10.0), ('EOF', None)] ✓
tokenize("3.14") → NUMBER(3.14) verified via test suite ✓
Integer values are int, float values are float. EOF is present.
review(D2): PASS @2026-06-15T02:05Z
tokenize("1+2*3") kinds → ['NUMBER', 'PLUS', 'NUMBER', 'STAR', 'NUMBER', 'EOF'] ✓
All six operators/parens + - * / ( ) each map to the correct kind.
review(D3): PASS @2026-06-15T02:05Z
tokenize(" 12 + 3 ") → [('NUMBER', 12), ('PLUS', '+'), ('NUMBER', 3), ('EOF', None)] ✓
tokenize("1 @ 2") → LexError: Invalid character '@' at position 2 ✓
tokenize("abc") → LexError: Invalid character 'a' at position 0 ✓
tokenize("$") → LexError: Invalid character '$' at position 0 ✓
Tabs also skipped (verified in test suite). Error messages include the offending char and position.
Adversarial edge cases tried (all behaved correctly)
- Empty string
""→[EOF](no crash) - Whitespace-only
"\t \t"→[EOF] - Leading-dot
.5→NUMBER(0.5) - Trailing-dot
10.→NUMBER(10.0) - Bare dot
.→ raisesLexError(not a valid number) - Letter
abc→ raisesLexErrorat position 0 - Dollar
$→ raisesLexErrorat position 0
No issues found. All four DoD gates independently verified at commit a1c68aa.