Estado Atual do Projeto
O que foi feito
Estrutura
- Criadas pastas de organizacao:
.github/workflows, configs, docs/decisions, scripts, src/mineres_compilador/application. - Projeto com layout inicial para evolucao em padrao comercial.
Codigo ja implementado
mineires_token.py - Classe
Token com @dataclass(slots=True, frozen=True). - Campos:
type, lexeme, line, column. - Metodo
to_output_row() para serializacao estavel em formato tabular.
tokentype.py Enum TokenType com tipos de token de controle, identificadores, literais, palavras reservadas, operadores e delimitadores. - Mapas lexicos:
KEYWORD_TOKENS, TYPE_TOKENS, BOOLEAN_TOKENS, WORD_OPERATOR_TOKENS, WORD_DELIMITER_TOKENS, ALL_WORD_TOKENS.
src/mineres_compilador/automato.py - Estruturas de estado e transicao implementadas (
EstadoTipo, Estado, Automato). - Carregamento de AFD por arquivo (
carregar_do_arquivo) com validacoes de integridade. - Reconhecimento greedy implementado (
reconhecer) retornando (aceito, token_type, comprimento). - Validado com casos:
certin, 2, @@@.
src/mineres_compilador/token.py e src/mineres_compilador/tokentype.py - Modulos consolidados dentro do pacote principal para imports relativos estaveis.
TokenType e ALL_WORD_TOKENS usados diretamente pelo lexer do pacote.
src/mineres_compilador/lexer.py - API implementada com
carregar_arquivo, carregar_string e analisar. - Reconhecimento token a token com apoio do
Automato. - Diferenciacao de
IDENTIFIER para palavras reservadas via ALL_WORD_TOKENS. - Rastreamento de posicao (
line, column) por token. - Fallback de erro lexico com
TokenType.ERROR ao falhar reconhecimento.
- Validacoes de automato e lexer foram executadas localmente durante o desenvolvimento.
- As suites antigas de testes foram removidas do repositorio.
Configuracao de repositorio
.gitattributes com * text=auto para normalizacao de quebras de linha.
O que ainda falta
- Criar ponto de entrada de aplicacao (CLI/Main) no pacote principal.
- Definir contrato final de erro lexico para uso externo (ex.: excecao vs token de erro).
- Garantir e padronizar emissao de token
EOF no fluxo final de tokenizacao. - Expandir cobertura com testes de integracao orientados a CLI.
- Criar workflow de CI em
.github/workflows. - Completar README principal com guia de uso e contribuicao.
Riscos atuais
- Sem CI, qualidade ainda depende de execucao manual local.
- Contrato de erro lexico e de
EOF ainda pode divergir entre uso interno e CLI. - Ausencia de CLI impede validacao ponta a ponta via linha de comando.
Definicao de pronto da fase atual
mineires_token.py e tokentype.py mantidos como fonte unica de verdade de contrato lexico. automato.py implementado e validado com testes manuais de carga e reconhecimento. lexer.py implementado e validado por execucoes locais da CLI. - Testes de automato e lexer executando com sucesso localmente.
- Documentacao minima de status estabelecida e sincronizada.
- Roadmap de implementacao definido e versionado.