# PR-12.2 - Flow Expression Analyzer Literal and Structural Expression Splitting ## Briefing Grande parte do dispatch de `PbsFlowExpressionAnalyzer` cobre formas literais e estruturais de expressao: literais, `this`, identificadores, grupos, tuplas, blocos, unarios, binarios, `none/some`, `new`, `as`, `ok/err`. Esta PR extrai essas familias para componentes menores, sem alterar funcionalidade. ## Motivation ### Dor atual que esta PR resolve 1. O dispatch principal mistura casos triviais com regras mais complexas de call/member/switch/handle. 2. Formas estruturais simples podem ser separadas com risco baixo e alta reducao de complexidade. 3. Sem esse corte, o dispatch central continua inchado mesmo com contexto compartilhado. ## Target Separar a analise de expressoes literais e estruturais: 1. literais e identificadores, 2. grupos, tuplas e blocos, 3. unario/binario, 4. `none/some`, `new`, `bind`-independent simple forms, `as`, `ok/err`. ## Dependencies Prerequisito direto: 1. `PR-12.1` ## Scope 1. Extrair casos simples de `analyzeExpressionInternal` para helpers/colaboradores dedicados. 2. Manter o resultado em `ExprResult` exatamente como hoje. 3. Preservar todas as chamadas a `typeOps` e `blockAnalyzer`. ## Non-Goals 1. Nao alterar regras de callback/bind. 2. Nao alterar member access ou overload resolution. 3. Nao alterar switch/handle/result propagation. ## Method ### O que deve ser feito explicitamente 1. Mover primeiro os casos com menor acoplamento semantico. 2. Manter o dispatch principal apenas como roteador. 3. Preservar a ordem atual de recursion para evitar mudanca em diagnosticos acumulados. ## Acceptance Criteria 1. Casos literais e estruturais deixam de ficar todos dentro do dispatch principal. 2. AST/semantics observados pela suite permanecem equivalentes. 3. O hotspot principal da classe reduz tamanho e branching sem alterar comportamento. ## Tests 1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*` 2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsOptionalResultTest*` 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. `BindExpr` deve entrar aqui ou junto de call resolution. A recomendacao e mantĂȘ-lo para `PR-12.3`, porque ele depende de matching de callback/callable.