74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
# PR-11.4 - PBS Expr Parser Literals, Patterns and Shared Token Utilities
|
|
|
|
## Briefing
|
|
|
|
Depois de extrair control-flow e primary/postfix, restam em `PbsExprParser` alguns clusters menores mas sensiveis: parsing de literais/padroes, `error path`, consumo de tokens e utilitarios de parse numerico/string.
|
|
|
|
Esta PR consolida esses pontos em utilitarios dedicados, ainda sem mudanca funcional.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Parsing de literal aparece em mais de um lugar (`primary` e switch pattern).
|
|
2. `error path`, `consumeMemberName`, `parseLong/Int/DoubleOrDefault` e `unescapeString` sao infra compartilhada e hoje permanecem acoplados ao parser principal.
|
|
3. Sem consolidar essa base, o parser termina menor, mas ainda com detalhes mecanicos espalhados.
|
|
|
|
## Target
|
|
|
|
Extrair infra compartilhada de expressao:
|
|
|
|
1. parsing de literais,
|
|
2. parsing de `error path`,
|
|
3. parsing de patterns simples,
|
|
4. token utilities e decode helpers.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-11.1`
|
|
2. `PR-11.2`
|
|
3. `PR-11.3`
|
|
|
|
## Scope
|
|
|
|
1. Extrair `parseLiteralPatternExpression`, `parseErrorPath`, `parseHandlePattern` e helpers correlatos.
|
|
2. Consolidar `consume`, `consumeMemberName`, `span`, `report`.
|
|
3. Consolidar `parseLongOrDefault`, `parseIntOrDefault`, `parseDoubleOrDefault`, `unescapeString`.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao alterar as regras de literal recovery.
|
|
2. Nao alterar o decode de strings.
|
|
3. Nao alterar a estrutura de `PbsAst.ErrorPath`.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Reunir parsing de literal/pattern em componente reutilizavel.
|
|
2. Mover utilitarios mecanicos para helpers claros e pequenos.
|
|
3. Garantir que toda chamada mantenha a mesma atribuicao de spans e diagnosticos.
|
|
4. Evitar criar uma util-class genérica demais; manter helpers focados no dominio de expression parsing.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `PbsExprParser` deixa de concentrar parsing repetido de literais/padroes e utilitarios basicos.
|
|
2. Parsing de strings, numeros e `error path` permanece equivalente.
|
|
3. A suite de parser continua verde sem atualizar comportamento esperado.
|
|
|
|
## Tests
|
|
|
|
1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*`
|
|
2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserTest*`
|
|
3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*`
|
|
|
|
## Affected Documents
|
|
|
|
1. Nenhum documento normativo.
|
|
|
|
## Open Questions
|
|
|
|
1. Nenhuma de arquitetura. Esta PR e de consolidacao local.
|