Compiladores 1 - Semana 10: Prática
Geração de Código Final (Bitcode)
Objetivos da Prática
- Implementar reconhecimento de expressões Java simples usando Flex+Bison
- Gerar código intermediário em formato bitcode textual
- Automatizar o processo de compilação e testes via Makefile
- Compreender o mapeamento entre operações da linguagem fonte e instruções de bitcode
- Validar a correta geração de código através de testes automatizados
Estrutura do Projeto
projeto/
├── src/
│ ├── lexer.l # Especificação do analisador léxico
│ ├── parser.y # Especificação do analisador sintático
│ ├── ast.c/h # Implementação da AST
├── tests/
│ ├── *.java # Casos de teste em Java
├── Makefile # Automação do build
├── README.md # Documentação do projeto
Artefatos gerados:
- Executável: ./generate
(compilador que gera bitcode)
- Arquivos temporários durante a compilação
Fluxo de Trabalho
-
Compilação:
bash make # Gera o compilador completo
-
Execução de Testes:
bash make test # Roda todos os casos de teste
-
Limpeza:
bash make clean # Remove arquivos gerados
Exemplo de Teste:
-
Entrada (
tests/sum.java
):java int x = 3 + 4;
-
Saída (bitcode gerado):
LOAD_CONST 3 LOAD_CONST 4 ADD STORE x
Tarefas Práticas
Exploração do Código:
- Analisar e modificar os exemplos existentes
- Compreender a relação entre gramática e geração de código
Expansão de Testes:
- Adicionar novos casos de teste em
tests/*.java
- Verificar a correta geração de bitcode
Desenvolvimento do Projeto:
- Implementar novas funcionalidades no compilador da equipe
- Documentar as decisões de implementação
Versionamento:
git add .
git commit -m "Implementa geração de bitcode para expressões aritméticas"
git push origin main
Tabela de Versionamento
Versão | Data | Descrição | Autor(es) | Revisor(es) |
---|---|---|---|---|
1.0 | 01/06/2025 | Criação da atividade de desenvolvimento 10 | Júlio Cesar |