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.