FEUP · Compiladores · 2024
Java-- Compiler
Um compilador para um subconjunto de Java, da gramática ao bytecode da JVM.
Código-fonte (abre num novo separador)Sem versão pública em produção
O problema
Construir um compilador funcional para Java-- (Jmm), um subconjunto didático de Java com classes, métodos, arrays, imports e controlo de fluxo, que gera código executável na Java Virtual Machine.
O que foi construído
- Gramática escrita em ANTLR 4, que produz uma árvore sintática abstrata anotada através de visitors.
- Construção da tabela de símbolos para classes, campos, métodos, parâmetros e variáveis locais, seguida de passos de análise semântica para verificação de tipos e variáveis não declaradas.
- Tradução para OLLIR, a representação intermédia da unidade curricular, e geração de assembly Jasmin, montado em ficheiros de classe da JVM.
- Validado com as baterias de testes JUnit dos checkpoints da unidade curricular.
O meu papel
Equipa de três elementos. Segundo a distribuição de trabalho documentada pela equipa, fui responsável por 45% do trabalho.
Tecnologias
- Java
- ANTLR 4
- OLLIR
- Jasmin
- JUnit
- Gradle