# PR-005 - PBS Parser Expressions, Optional/Result, and Apply ## Briefing A gramatica de expressoes da spec inclui formas que ainda nao existem no frontend (`apply`, `else`, `switch`, `handle`, `new`, `bind`, `some/none/ok/err`, member/postfix avancado). Este PR fecha a cobertura sintatica dessas expressoes e preserva as regras de precedencia/rejeicao. ## Target - Specs: - `docs/pbs/specs/3. Core Syntax Specification.md` (secao 10, 13, 14) - `docs/pbs/specs/11. AST Specification.md` (secoes 9, 10) - Codigo: - `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsExprParser.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. Implementar cadeia de precedencia completa incluindo `apply` right-associative. 2. Implementar `else` extraction, `if` expression, `switch`, `handle` e `as`. 3. Implementar postfixes: member access, call sugar, propagate `!`. 4. Suportar primarias: `this`, `new`, `bind`, `some`, `none`, `ok`, `err`, unit e tuple expr. 5. Rejeitar cadeias nao associativas e formas proibidas (`?` propagation, single-slot tuple literal). ## Acceptance Criteria - Parser respeita precedencia/associatividade normativa (incluindo `apply` e `else`). - `a < b < c` e `a == b == c` continuam rejeitados deterministicamente. - `if` expression exige `else` e bloco nos ramos. - `switch` e `handle` parseiam mapa de arms e wildcard conforme a gramatica. - Superficies `optional/result` sao parseadas sem inferir semantica indevida. ## Tests - `PbsExprParserTest` ampliado com: - precedencia completa e associatividade; - expressoes `apply` encadeadas; - `switch`/`handle` validos e invalidos; - `some/none/ok/err/bind/new`; - cenarios negativos obrigatorios da secao 12 de syntax.