--- id: LSN-0018 ticket: pbs-learn-to-discussion-lessons-migration title: PBS AST and Parser Contract Legacy Import created: 2026-03-27 tags: [compiler, pbs, legacy-import, ast, parser, diagnostics] --- ## Context Legacy import from `docs/compiler/pbs/learn/01. AST and Parser Contract.md`. This lesson preserves the durable parser-facing contract that remained after the PBS workflow prune. It records what later phases are allowed to assume about AST structure without freezing one parser implementation strategy. ## Key Decisions ### Obligations-first AST contract **What:** PBS standardizes observable AST obligations rather than one mandatory in-memory representation. **Why:** Downstream phases need deterministic structure and attribution, but the repository does not want to lock parser architecture or implementation language. **Trade-offs:** The contract is flexible for implementation, but it requires strong conformance discipline around spans, node families, and rejection behavior. ### Recovery must preserve structural honesty **What:** Parser recovery is allowed only when the recovered AST remains structurally coherent and attribution-safe. **Why:** Recovery exists to keep diagnostics useful, not to hide invalid syntax behind permissive fake trees. **Trade-offs:** This makes parser implementations slightly stricter, but it prevents later phases from operating on misleading AST shapes. ## Patterns and Algorithms - Treat AST as a structural boundary, not a semantic one. - Preserve declaration identity instead of collapsing overloads or rewriting source-observable parse outcomes. - Make precedence and associativity visible in AST shape, because they are part of the user-observable contract. - Require stable source attribution on every node that diagnostics or lowering may consume. - Keep diagnostic identity locale-agnostic; wording is not the conformance key. ## Pitfalls - Rewriting AST after parse in a way that changes observable parse meaning. - Allowing recovery to downgrade a required rejection into an accepted semantic shape. - Emitting nodes without enough attribution for diagnostics or lowering. - Treating localized message strings as conformance identity. ## Takeaways - PBS AST is standardized by obligations, not by one exact object model. - Parser recovery is acceptable only when it stays structurally honest. - Attribution and deterministic rejection are first-class parser contracts, not secondary details.