81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
# PR-10.5 - PBS Parser Recovery Utilities and Regression Hardening
|
|
|
|
## Briefing
|
|
|
|
As PRs anteriores reduzem a complexidade estrutural de `PbsParser`. Esta PR fecha a trilha com consolidacao de recovery/utilitarios e endurecimento de regressao, ainda sem alterar funcionalidade.
|
|
|
|
O objetivo e evitar que a decomposicao introduza pequenas divergencias em diagnosticos, spans ou pontos de reinicio.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Recovery e helpers de consumo sao sensiveis e podem ficar duplicados apos a extracao.
|
|
2. Sem cobertura adicional, uma refatoracao estrutural grande pode preservar testes principais e ainda mudar detalhes de parser.
|
|
3. O parser precisa terminar menor, mas tambem com fronteiras de manutencao claras.
|
|
|
|
## Target
|
|
|
|
Consolidar a etapa final do refactor:
|
|
|
|
1. recovery de topo e de atributos,
|
|
2. helpers de consumo/report,
|
|
3. regressao de spans/diagnosticos,
|
|
4. limpeza final de `PbsParser`.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-10.1`
|
|
2. `PR-10.2`
|
|
3. `PR-10.3`
|
|
4. `PR-10.4`
|
|
|
|
## Scope
|
|
|
|
1. Consolidar `consume`, `consumeForToken`, `consumeDeclarationTerminator`, `consumeBalancedBraces`, `synchronizeTopLevel` e recovery de atributo em utilitarios coesos.
|
|
2. Remover duplicacao residual entre subparsers.
|
|
3. Adicionar ou endurecer testes de regressao para:
|
|
- spans,
|
|
- erros esperados,
|
|
- recovery em topo e em bloco,
|
|
- modos `ORDINARY` e `INTERFACE_MODULE`.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao alterar taxonomia de `ParseErrors`.
|
|
2. Nao introduzir novas construcoes sintaticas.
|
|
3. Nao reescrever o lexer ou `PbsExprParser`.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Fazer uma passada final de consolidacao estrutural.
|
|
2. Eliminar helpers obsoletos ou duplicados apos as extracoes.
|
|
3. Verificar equivalencia observavel com foco em spans e recovery.
|
|
4. Encerrar a trilha com `PbsParser` como fachada pequena e clara.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `PbsParser` fica restrito a composicao/orquestracao e nao volta a concentrar logica de parse pesado.
|
|
2. Recovery e consumo de token ficam centralizados e sem duplicacao relevante.
|
|
3. Suite do frontend PBS passa integralmente.
|
|
4. Nao ha mudanca funcional observavel em parse, AST ou diagnosticos.
|
|
|
|
## Tests
|
|
|
|
1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserTest*`
|
|
2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserStatementsTest*`
|
|
3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*`
|
|
4. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test`
|
|
|
|
## Affected Documents
|
|
|
|
1. Nenhum documento normativo.
|
|
|
|
## Open Questions
|
|
|
|
1. Nenhuma de arquitetura. A partir desta PR, qualquer mudanca adicional deve ser tratada como evolucao funcional separada, nao como parte do refactor estrutural.
|