2.4 KiB
2.4 KiB
PR-11.1 - PBS Expr Parser Shared Context and Precedence Spine
Briefing
PbsExprParser hoje concentra estado compartilhado, helpers basicos e toda a espinha de precedence em uma unica classe.
Esta PR introduz a fundacao estrutural para decompor o parser de expressoes sem alterar comportamento: contexto compartilhado, helpers comuns e uma organizacao mais clara da cadeia de precedence.
Motivation
Dor atual que esta PR resolve
- Extracoes futuras dependem de duplicar acesso a
cursor,diagnostics,fileIdeblockParserDelegate. - A cadeia de precedence existe, mas toda a infraestrutura esta acoplada a uma unica classe.
- Refatorar primeiro a fundacao reduz risco antes de mover control-flow e postfix/primary.
Target
Estabelecer uma base segura para o refactor de PbsExprParser:
- contexto compartilhado,
- helpers de span/report/consume reutilizaveis,
- espinha de precedence claramente separada do restante.
Dependencies
Nenhuma.
Scope
- Introduzir
ExprParserContextou equivalente. - Encapsular
cursor,diagnostics,fileIdeblockParserDelegatenessa camada. - Reorganizar a espinha de precedence (
parseExpression,parseApply,parseOr,parseAnd,parseEquality,parseComparison,parseAs,parseTerm,parseFactor,parseUnary) sem mudar a ordem semantica.
Non-Goals
- Nao alterar associatividade ou precedence.
- Nao mover ainda parsing de
if/switch/handle. - Nao alterar
PbsParsernemPbsTokenCursor.
Method
O que deve ser feito explicitamente
- Criar um contexto compartilhado pequeno e explicito.
- Manter
PbsExprParsercomo entrypoint package-private. - Preservar a ordem atual de chamadas na chain de precedence.
- Validar que esta PR e puramente estrutural.
Acceptance Criteria
PbsExprParsercontinua com o mesmo contrato de entrada/saida.- Precedence e associatividade permanecem equivalentes.
- Nao ha mudanca observavel em AST, spans ou diagnosticos de expressoes.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
blockParserDelegatedeve continuar como callback simples ou migrar para interface mais rica de surface parsing? Nesta PR, manter callback simples minimiza risco.