2.7 KiB
2.7 KiB
PR-10.1 - PBS Parser Shared Context and Safe Delegation
Briefing
PbsParser concentra estado compartilhado (cursor, diagnostics, fileId, parseMode, loopDepth) e responsabilidades de parsing em uma unica classe.
Esta PR introduz uma fundacao estrutural para decomposicao, sem alterar comportamento: um contexto compartilhado e pontos de delegacao seguros, mantendo PbsParser como fachada publica.
Motivation
Dor atual que esta PR resolve
- Extracoes futuras dependem de copiar estado ou expor detalhes internos do parser.
- O acoplamento entre navegação, diagnostico e parse impede quebrar a classe sem risco alto.
- A refatoracao fica mais segura se a infraestrutura de compartilhamento vier antes da movimentacao de logica.
Target
Estabelecer a base de refactor sem mudar funcionalidade:
- Introduzir um contexto compartilhado para parser.
- Encapsular helpers comuns de span/report/consume no contexto ou utilitarios proximos.
- Permitir delegacao gradual para subparsers mantendo
PbsParser.parse(...)como API unica.
Dependencies
Nenhuma.
Scope
- Criar
ParserContextou equivalente com acesso acursor,diagnostics,fileId,parseModeeloopDepth. - Mover helpers estruturais triviais para o contexto onde isso nao altere semantica.
- Adaptar
PbsExprParserbootstrap para consumir o mesmo contexto, ou uma visao compatível, sem mudar seu comportamento.
Non-Goals
- Nao alterar gramatica PBS.
- Nao mover ainda parsing de tipos, atributos, blocos ou declaracoes para classes separadas.
- Nao alterar mensagens, codigos de erro ou spans.
Method
O que deve ser feito explicitamente
- Introduzir um objeto de contexto pequeno e explicito.
- Manter
PbsParsercomo orquestrador/fachada durante toda a PR. - Preservar o contrato de
parse(...)e a ordem de consumo de tokens. - Validar que a nova camada e puramente estrutural.
Acceptance Criteria
PbsParsercontinua sendo o unico entrypoint publico de parse.- Nenhum teste de parser, semantica ou frontend muda comportamento esperado.
- Nao ha alteracao observavel em AST, spans ou diagnosticos.
- A PR reduz acoplamento e prepara extracoes futuras sem mover regras complexas ainda.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
- O
loopDepthdeve viver no contexto mutavel compartilhado ou em um helper especializado de block parsing? Esta PR pode manter no contexto; a decisao final pode vir naPR-10.4.