prometeu-studio/docs/pbs/pull-requests/PR-004-pbs-parser-statements-and-control-flow.md
2026-03-24 13:42:19 +00:00

36 lines
1.7 KiB
Markdown

# 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.