2.8 KiB
2.8 KiB
PR-10.3 - PBS Parser Top-Level Declaration Decomposition
Briefing
O maior concentrador de branching restante em PbsParser e a montagem de topo de arquivo e o dispatch de declare ....
Esta PR extrai o parsing de declaracoes top-level e de corpos declarativos para colaboradores especificos, mantendo a mesma gramatica e o mesmo comportamento observavel.
Motivation
Dor atual que esta PR resolve
parseFileeparseDeclareTopDeclacumulam roteamento de muitas formas de declaracao.- Declaracoes como
host,builtin type,struct,contract,service,enumeimplementsconvivem no mesmo arquivo e elevam acoplamento. - Essa parte do parser muda com frequencia e hoje tem custo alto de manutencao.
Target
Separar a camada de declaracoes top-level:
- parsing de imports,
- dispatch de
declare, - parsing de corpos declarativos,
- roteamento por
ParseMode.
Dependencies
Prerequisitos diretos:
PR-10.1PR-10.2
Scope
- Extrair
parseFileem conjunto com o dispatch de topo para um colaborador dedicado. - Extrair
parseDeclareTopDecle parsers correlatos (host,builtin type,struct,contract,service,error,enum,callback,const,implements). - Preservar o comportamento atual de atributos permitidos/proibidos por tipo de declaracao.
Non-Goals
- Nao alterar a ordem de imports/declarations no AST.
- Nao alterar as regras de
INTERFACE_MODULE. - Nao reescrever
PbsExprParser.
Method
O que deve ser feito explicitamente
- Criar um
PbsTopLevelParsere umPbsDeclarationParser, ou divisao equivalente. - Manter em
PbsParserapenas a montagem final da fachada e o fio de chamada principal. - Extrair por familias coesas de declaracao, evitando uma nova classe monolitica.
- Preservar sincronia/recovery de topo no mesmo fluxo observavel.
Acceptance Criteria
parseFileeparseDeclareTopDecldeixam de concentrar o dispatch completo de todas as declaracoes.- O parse de topo continua deterministico e equivalente ao estado anterior.
- Testes de parser e frontend continuam verdes sem necessidade de atualizar fixtures por mudanca funcional.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsBarrelParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsInterfaceModuleSemanticsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
implementsdeve ficar junto de declaracoes top-level gerais ou em um parser especializado de contract/service surfaces? A recomendacao e mantê-lo no parser top-level por depender fortemente do roteamento de arquivo.