2.5 KiB
2.5 KiB
PR-11.2 - PBS Expr Parser Control-Flow Subparsers
Briefing
As formas de expressao com maior branching em PbsExprParser sao if, switch, handle e else.
Esta PR extrai essas construcoes para subparsers dedicados, mantendo a mesma sintaxe, mesmos diagnosticos e o mesmo AST.
Motivation
Dor atual que esta PR resolve
if/switch/handlecompartilham recovery, parsing de blocos e recursion, elevando bastante a complexidade local.- Essas formas sao semanticamente coesas e podem viver fora do parser principal de precedence.
- Sem essa extracao,
PbsExprParsercontinua grande mesmo apos separar a fundacao.
Target
Separar parsing de expressoes de controle de fluxo:
handle,else,if expression,switch expression.
Dependencies
Prerequisito direto:
PR-11.1
Scope
- Extrair
parseHandle,parseHandlePattern,parseElse,parseIfExpression,parseIfExpressionFromToken,parseSwitchExpression,parseSwitchPattern. - Preservar uso de
parseSurfaceBlockpara blocos de expressao. - Manter exatamente a precedence atual dessas superficies.
Non-Goals
- Nao alterar a regra de
if expressionexigirelse. - Nao alterar curingas de
switch. - Nao alterar formatos aceitos de
handlee remapeamento de erro.
Method
O que deve ser feito explicitamente
- Introduzir subparsers pequenos por familia de construcao.
- Reusar o contexto compartilhado da PR anterior.
- Garantir que
parseExpression()continue entrando pela mesma superficie sintatica. - Proteger a equivalencia com testes focados em control-flow expressions.
Acceptance Criteria
- A logica de
if/switch/handle/elsenao fica mais centralizada emPbsExprParser. - ASTs gerados para essas construcoes permanecem equivalentes.
- Diagnosticos de formas invalidas continuam com o mesmo contrato observavel.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserStatementsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsResultFlowRulesTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
elsedeve viver junto do control-flow parser ou continuar na espinha de precedence. A recomendacao e movê-lo junto porque a associatividade e as mensagens de erro fazem parte do mesmo cluster conceitual.