prometeu-studio/docs/pbs/pull-requests/PR-024-pbs-parser-ast-interface-module-mode.md
2026-03-24 13:42:22 +00:00

56 lines
1.8 KiB
Markdown

# 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`