# PR-13.3 - Flow Body Analyzer Statement Analysis Splitting ## Briefing Depois de separar entry/completion, o maior hotspot restante em `PbsFlowBodyAnalyzer` passa a ser `analyzeBlock` e `analyzeStatement`, com tratamento de `let`, `return`, `if`, `for`, `while`, expression statement e delegacao para `PbsFlowExpressionAnalyzer`. Esta PR extrai essa superficie para colaboradores menores, sem alterar funcionalidade. ## Motivation ### Dor atual que esta PR resolve 1. `analyzeStatement` concentra varias formas de statement com regras semanticas distintas. 2. Loops, `if` e `return` usam os mesmos parametros e diagnosticos, mas pertencem a clusters semanticos diferentes. 3. A manutencao dessa logica em um unico metodo torna a classe dificil de evoluir. ## Target Separar a analise de statements: 1. blocos e escopos, 2. `let` e expression statements, 3. `return` flow, 4. `if/for/while`. ## Dependencies Prerequisitos diretos: 1. `PR-13.1` 2. `PR-13.2` ## Scope 1. Extrair `analyzeBlock` e o dispatch de `analyzeStatement`. 2. Extrair regras de `let`, `if`, `for`, `while` e expression statement para helpers/colaboradores dedicados. 3. Deixar `return` bootstrap pronto para corte proprio, sem ainda mexer em assignment target resolution. ## Non-Goals 1. Nao alterar mutabilidade de escopo local. 2. Nao alterar validacao de tipos de condicao ou bounds de loop. 3. Nao alterar assignment resolution. ## Method ### O que deve ser feito explicitamente 1. Introduzir um statement analyzer ou divisao equivalente por familias. 2. Reusar o contexto compartilhado da `PR-13.1`. 3. Preservar a ordem atual de chamadas ao `expressionAnalyzer`. ## Acceptance Criteria 1. `analyzeStatement` deixa de concentrar todas as formas de statement. 2. Scoping, condition checks e loop bound checks permanecem equivalentes. 3. Suite semantica continua verde sem mudanca funcional. ## Tests 1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*` 2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*` 3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*` 4. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test` ## Affected Documents 1. Nenhum documento normativo. ## Open Questions 1. `return` deve ficar no statement analyzer ou em um colaborador proprio de result flow. A recomendacao e deixar o corte final para a PR seguinte se isso simplificar mais a classe.