1.9 KiB
1.9 KiB
PR-002 - PBS AST Contract V1
Briefing
Hoje o AST representa apenas funcoes, let/return e expressoes basicas.
A spec exige familias obrigatorias de declaracoes e metadados estaveis para parser, diagnosticos e lowering.
Este PR fecha o contrato estrutural do AST sem ainda resolver todas as regras semanticas.
Target
- Specs:
docs/pbs/specs/11. AST Specification.md(secoes 6, 7, 8, 9, 10)docs/pbs/specs/3. Core Syntax Specification.md(secoes 6, 7, 8, 9, 10)
- Codigo:
prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/ast/PbsAst.javaprometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsParser.java
Method
- Remodelar o root para conter imports e uma lista de
TopDeclem ordem de fonte. - Introduzir familias obrigatorias de declaracao (
fn,struct,contract,service,error,enum,callback,declare const,implements). - Adicionar estruturas de tipo (unit, simple, optional, tuple nomeada,
Self) e retorno (plain,result). - Garantir
file/start/endem todos os nos consumidos por diagnostico/lowering. - Definir nos de erro/recovery explicitos para evitar AST permissivo.
Acceptance Criteria
- Existe exatamente um root por arquivo com filhos em ordem deterministica.
- AST preserva identidade de declaracoes sem colapsar overload cedo.
- Cada declaracao obrigatoria possui nome, assinatura/superficie e span.
- Parser recovery nao fabrica semantica valida; erros ficam marcados no AST.
- Precedencia e associatividade continuam observaveis pelo shape da arvore.
Tests
PbsParserTest:- validacao de shape do root (
imports + topDecls); - cobertura de todas as familias de declaracao obrigatorias no AST;
- asserts de spans (
file/start/end) em nos principais; - fixture com erro e recovery garantindo estrutura coerente.
- validacao de shape do root (