PaperCall is shutting down on August 31, 2026. Existing events and submissions will remain available until then. New events can no longer be created.

Implementando um interpretador em Go “na unha”

By Alex Sandro Garzão

Elevator Pitch

Já pensou em como seria implementar um interpretador em Go, usando apenas a biblioteca padrão? Nesta palestra irei demonstrar como podemos implementar um interpretador para G-Portugol, uma linguagem de programação totalmente em português.

Description

Um processo de interpretação clássico é dividido nos seguintes estágios:

  • Análise léxica;
  • Análise sintática;
  • Análise semântica;
  • Geração de código intermediário;
  • Otimizações (opcional);
  • Execução do código intermediário.

Por trás de VMs tradicionais como a VM de Java, Python e Ruby, existe toda uma complexidade que é abstraída por um interpretador que consegue transformar um código escrito em linguagem de alto nível para um código intermediário (bytecode), de forma que as VMs consigam abstrair o hardware bem como executar este código da forma mais performática possível.

Para demonstrar como funciona este processo de interpretação, irei implementar em Golang um (micro) interpretador para a linguagem This is an G-Portugol, uma linguagem de programação totalmente escrita em Português cujo foco é o ensino de algoritmos.

Ao final da palestra todos terão uma noção do que é um interpretador clássico e de como implementar um para a sua linguagem favorita.

Notes

Eu atuei com pesquisa acadêmica nas áreas de linguagens de programação, compiladores e máquinas virtuais. Desenvolvi alguns “toy” compilers para linguagens acadêmicas bem como algumas VMs para dar suporte à execução destas linguagens.