56 lines
1.8 KiB
Markdown
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`
|
|
|