2.1 KiB
2.1 KiB
PR-001 - PBS Lexer Core Syntax Alignment
Briefing
O lexer atual cobre apenas uma parte pequena da superficie definida em 3. Core Syntax Specification.md.
Este PR fecha o contrato lexico minimo de v1 para que parser, semantica e diagnosticos trabalhem sobre um conjunto estavel de tokens.
Target
- Specs:
docs/pbs/specs/3. Core Syntax Specification.md(secoes 4.1, 4.2, 4.4, 4.5, 10)docs/pbs/specs/11. AST Specification.md(secao 7: atribuicao estavel)
- Codigo:
prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lexer/PbsTokenKind.javaprometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lexer/PbsLexer.javaprometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lexer/LexErrors.java
Method
- Expandir
PbsTokenKindpara todos os keywords ativos de v1 e operadores/pontuacao usados na gramatica. - Adicionar tokens para
COMMENTe para operadores compostos ausentes (->,+=,-=,*=,/=,%=). - Suportar aliases lexicos (
and/or/not) sem quebrar&&/||/!. - Preservar spans estaveis em todos os tokens emitidos.
- Manter rejeicao deterministica para caracteres invalidos e strings nao terminadas.
Acceptance Criteria
- Lexer emite classes obrigatorias:
identifiers,keywords,literals,punctuation,operators,comments,EOF. - Keywords reservados nao entram como
IDENTIFIER. and/or/note&&/||/!sao tokenizados de forma consistente.->nao e decomposto em dois tokens (-e>).- Comentarios de linha sao representados como token e nao perdem a continuidade do stream.
- Todos os tokens carregam
start/endcorretos no arquivo.
Tests
PbsLexerTest:- caso feliz com arquivo contendo imports, declaracoes, controle de fluxo e operadores compostos;
- caso de comentarios em multiplas linhas;
- caso de palavras reservadas vs identificadores parecidos;
- caso de string nao terminada (
E_LEX_UNTERMINATED_STRING); - caso de caractere invalido (
E_LEX_INVALID_CHAR).
- Fixtures de regressao para
->,and/or/note atribuicoes compostas.