# PR-004 - PBS Parser Statements and Control Flow ## Briefing O parser atual cobre apenas `let`, `return` e expression statement. Este PR implementa o bloco de statements exigido pela spec para viabilizar semantica de fluxo e validacoes posteriores. ## Target - Specs: - `docs/pbs/specs/3. Core Syntax Specification.md` (secao 9) - `docs/pbs/specs/11. AST Specification.md` (secao 9) - Codigo: - `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsParser.java` - `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/ast/PbsAst.java` - `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/ParseErrors.java` ## Method 1. Adicionar parser para `assign`, `if`, `for`, `while`, `break`, `continue`. 2. Introduzir `let const` e modelagem de `LValue` (sem call chain em alvo de atribuicao). 3. Implementar validacao sintatica de forma de `for` (`from/until/step`). 4. Marcar uso invalido de `break/continue` fora de loop como erro deterministico. 5. Preservar recovery por fronteira de statement (`;` e fechamento de bloco). ## Acceptance Criteria - AST de bloco representa todas as formas de `Stmt` da secao 9. - Atribuicao e statement, nao expressao. - `break/continue` fora de loop emite diagnostico estavel. - `for` e `while` parseiam com estrutura e spans corretos. - Targets de atribuicao invalidos sao rejeitados no parser. ## Tests - `PbsParserStatementsTest` novo cobrindo: - `let`, `let const`, `assign` simples e composta; - `if/else`, `for` com e sem `step`, `while`; - `break/continue` valido e invalido; - recovery apos statements malformados.