2.7 KiB
2.7 KiB
PR-10.4 - PBS Parser Block and Statement Decomposition
Briefing
Depois de extrair tipos/atributos e declaracoes top-level, o maior hotspot restante de PbsParser passa a ser parsing de blocos e statements.
Esta PR separa block, statement, assignment, loop e controle de fluxo em um parser dedicado, sem alterar a funcionalidade.
Motivation
Dor atual que esta PR resolve
parseBlock,parseStatement,parseIfStatement,parseForStatemente correlatos mantem alta complexidade e forte acoplamento comloopDepth.- A mistura de statement parsing com helpers de token/erro dificulta evolucao e leitura.
- O parser de blocos e o ponto mais sensivel para regressao e precisa de uma fronteira estrutural clara.
Target
Extrair a superficie de blocos e statements para um colaborador dedicado:
- blocos,
- statements estruturados,
- assignment detection,
- controle de
loopDepth.
Dependencies
Prerequisitos diretos:
PR-10.1PR-10.2PR-10.3
Scope
- Extrair
parseBlock,parseStatement,parseLetStatement,parseAssignStatement,parseLValue. - Extrair
parseIfStatement,parseForStatement,parseWhileStatement,parseBreakStatement,parseContinueStatement,parseReturnStatement. - Extrair
isAssignmentStatementStarte helpers locais associados.
Non-Goals
- Nao alterar regras de tail expression.
- Nao alterar precedence de expressoes.
- Nao alterar as mensagens atuais de erro para loop control e assignment targets.
Method
O que deve ser feito explicitamente
- Introduzir um
PbsBlockParserou equivalente. - Encapsular
loopDepthdentro do contexto compartilhado ou de uma API pequena de entrada/saida de loop. - Reutilizar
PbsExprParsercomo dependencia, sem alterar seu contrato. - Preservar spans e forma de recovery dentro de blocos.
Acceptance Criteria
PbsParserdeixa de conter a maior parte do parsing de blocos e statements.loopDepthcontinua correto parabreakecontinue.- Nenhum teste de parser, semantica de flow ou lowering sofre alteracao funcional.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserStatementsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsFallthroughTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
isAssignmentStatementStartdeve permanecer no parser de bloco ou virar helper de cursor/lookahead. A recomendacao e mantê-lo no parser de bloco nesta PR e avaliar extração posterior apenas se necessário.