prometeu-studio/docs/pbs/pull-requests/PR-005-pbs-parser-expressions-optional-result-apply.md
2026-03-24 13:42:19 +00:00

1.9 KiB

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.