Saltar para o conteúdo
Voltar aos projetos

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