You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Step 2 of frontend object parity: a recursive-descent rss parser that STREAMS the
canonical AST dump (the dump is a pre-order traversal, so no handle-based AST is
materialized — each parse fn emits its node line(s) at a threaded depth and returns
the next token index). Reuses scan.rss's tokenizer/accessors/constants.
Core coverage: top-level functions (public/async/native, params with read/mut/take
effects, generic-arg types, return type, body); statements (return, let/local [mut]
[:type] =, assign, if/else[-if], while/loop, break, continue, expr-stmt); a
range-based split-at-last-top-level-operator expression parser matching the Rust
oracle's precedence (||, &&, |, ^, &, comparisons, shifts, +/-, */%), plus calls
(name/qualified/receiver, named + effect-prefixed args), field access, index, array
literals, try `?`, parenthesized grouping, and literals.
Harness (crate::selfhost_parity):
- ast_parity_tiny_sample + ast_parity_samples (non-ignored) — byte-for-byte vs the
oracle on samples/tiny.rss and curated samples/ast/*.rss. The curated set is also
the fast inner-loop gate (risk mitigation for corpus-gate runtime).
- ast_parity_corpus (#[ignore]) — measures unaided reach over all 560 files and
ratchets a floor. Current: 58 byte-exact, 0 run-failures (the producer never
crashes; unsupported constructs mismatch rather than panic). Floor set to 58.
Residual (declaration items, match/closures/for, effect-receiver calls, operator
line-continuation) is the growing tail, tracked next as SH-025.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments