Pular para o conteúdo
Pedro Braiti
← Todos os projetos

Ferramentas

Compilador com saída em Assembly ARMv7

Um compilador completo, da análise léxica ao Assembly ARMv7 que roda no simulador — em Python puro, sem dependência nenhuma.

Medido

55/55

os testes passando, do reconhecimento do token ao assembly que roda no simulador

Condição
pytest na árvore do repositório · 17 de léxico, 12 de sintaxe, 18 do sistema de tipos e 8 de ponta a ponta
Papel
Coautor
Contexto
PUCPR — Linguagens Formais e Compiladores
Período
2026
Situação
Público · trabalho acadêmico em dupla

Compilador para uma linguagem em notação polonesa reversa, feito na disciplina de Linguagens Formais e Compiladores da PUCPR. O caminho é completo: análise léxica e sintática sobre uma gramática EBNF documentada, tabela de símbolos, tipagem estática e forte com verificação na árvore sintática atribuída, e geração de Assembly ARMv7 — o código de saída roda de fato no simulador Cpulator.

Escrito em Python puro, sem nenhuma dependência de runtime: clona e executa. Foi uma decisão consciente, porque a graça do exercício é que cada etapa do compilador esteja visível no código, e não escondida atrás de um gerador de parser.

Foi um trabalho em dupla, e revisamos o código um do outro por pull request. A parte que deu mais trabalho foi a geração de código: a semântica da linguagem-fonte é simples, mas mapear expressões para registradores ARMv7 respeitando a convenção de chamada obriga a ter a árvore atribuída correta antes — erro de tipo que passa despercebido vira assembly que monta e faz a coisa errada em silêncio.