prometeu-studio/docs/compiler/pbs/pull-requests/PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md

71 lines
1.9 KiB
Markdown

# PR-19.3 - PBS Parser and AST for Globals, Barrel, and Lifecycle Markers
## Briefing
Depois do corte normativo e do refactor estrutural do dependency graph, PBS precisa aceitar a nova surface da familia `19` no frontend sintatico e no AST:
1. `declare global`,
2. entradas `global` em `mod.barrel`,
3. atributos `[Init]` e `[Frame]`.
Esta PR faz o corte parser+AST, sem ainda fechar toda a semantica.
## Target
Estender parser e AST para suportar:
1. declaracoes `global`,
2. barrel declarations `mod global` / `pub global`,
3. markers `[Init]` e `[Frame]` sobre `fn name() -> void`.
## Dependencies
Prerequisitos diretos:
1. `PR-19.1`
2. `PR-19.2`
## Scope
1. Atualizar lexer/parser/top-level declaration parsing conforme necessario.
2. Atualizar AST model para representar globals e markers de lifecycle.
3. Atualizar barrel AST para distinguir `global` de `const`.
4. Preservar spans e attribution adequados.
## Non-Goals
1. Nao validar ainda dependency graph de globals.
2. Nao validar ainda `[InitAllowed]` em host methods.
3. Nao implementar lowering.
4. Nao implementar published wrapper.
## Method
1. Introduzir novos nodes/surfaces com identidade explicita no AST.
2. Reusar padroes atuais de attributes/markers sem heuristicas textuais.
3. Preservar recovery e diagnosticos sintaticos existentes.
## Acceptance Criteria
1. Parser aceita `declare global Name: T = expr;`.
2. Parser aceita `mod global Name;` e `pub global Name;`.
3. AST distingue `global` de `const`.
4. AST registra `[Init]` e `[Frame]` como markers explicitos.
5. Spans e recovery permanecem defensaveis.
## Tests
1. Fixtures positivas de parse para `declare global`, barrel `global`, `[Init]` e `[Frame]`.
2. Fixtures negativas de parse para formas claramente malformed.
3. Regressao do conjunto atual de parser/AST.
## Affected Artifacts
1. parser PBS
2. AST model PBS
3. testes de parser/AST
## Open Questions
1. Nenhuma. A semantica fina fica para as PRs 19.4 a 19.6.