# PR-024 - PBS Parser and AST Support for Interface-Module Mode ## Briefing Hoje o parser rejeita atributos no topo e `declare host`/`declare builtin type` sempre. Em interface-module mode, essas forms reservadas devem ser parseadas e representadas no AST. ## Motivation Sem AST/parser para forms reservadas: - nao ha como validar semantica de SDK/stdlib, - nao ha como extrair metadata (`Host`, `BuiltinType`, `Slot`, `IntrinsicCall`), - e nao ha base para linking/lowering dessas surfaces. ## Target - `PbsAst` (novos nodes de declaracao e metadata de atributo). - `PbsParser` com `SourceKind`/mode-aware parsing. ## Scope - Adicionar no AST: `HostDecl`, `BuiltinTypeDecl`, shapes de atributo e anexacao por posicao valida. - Em modo `PROJECT`: manter rejeicao de forms reservadas e atributos fora de regras. - Em modo `SDK_INTERFACE`: parsear forms reservadas e attributes permitidas. ## Method - Tornar parser mode-aware (`ORDINARY`, `INTERFACE_MODULE`). - Substituir rejeicao hardcoded por gating por mode. - Preservar spans, recovery e diagnosticos deterministicos. ## Acceptance Criteria - Modulo ordinario continua rejeitando `declare host`/`declare builtin type` e usos invalidos de atributos. - Interface module aceita as forms reservadas sintaticamente previstas. - AST exposto inclui metadata necessaria para fases seguintes. ## Tests - Parser tests para ordinario vs interface-module com mesmos tokens. - Tests de recovery e spans nas novas declaracoes. - Tests negativos para formas reservadas malformadas. ## Non-Goals - Julgamento semantico completo das attributes reservadas. - Resolucao de imports reservados (ja coberta em PR anterior). ## Affected Documents - `docs/pbs/specs/3. Core Syntax Specification.md` - `docs/pbs/specs/11. AST Specification.md` - `docs/pbs/specs/12. Diagnostics Specification.md`