Skip to content

Compiladores

2º sem 2023 e 2º sem 2020

Ementa

  • Estrutura de um compilador
  • Fundamentos de linguagens formais
  • Planejamento da construção de um compilador e a seleção de ferramentas
  • Análise léxica
  • Construção de um analisador léxico
  • Análise sintática
  • Tabela de símbolos, análise semântica e tradução dirigida por sintaxe
  • Tradução dirigida pela sintaxe
  • Tabela de símbolos
  • Geração de código intermediário
  • Geração de código e otimização de código
  • Especificação de uma proposta de linguagem inovadora

Introdução

Conforme Steve Yegge, chefe engenharia na sourcegraph.com, que foi gerente de desenvolvimento na Amazon, e engenheiro de software na Google, em seu blog post "Rich Programmer Food" :

"Se você não conhece como os compiladores funcionam, então não sabe como os computadores funcionam. E por outro lado, se você não tem 100% de certeza de como compiladores funcionam, então não os conhece."

"Construção de compiladores é (...) a segunda disciplina mais importante que você pode ter em um curso de graduação em Ciências da Computação."

"Sistemas Operacionais, Aprendizado de Máquina, Computação Distribuída, e Construção de Algoritmos são tão importantes quanto Compiladores. Exceto pelo fato de que você continuará sem saber como os computadores funcionam."

Desenvolver compiladores geralmente é uma tarefa árdua, porém é uma oportunidade de aprender a utilizar várias áreas da ciência da computação em uma implementação. Esse conhecimento adquirido pode ser utilizado em diversas outras aplicações, não se limitando a compiladores.

Conhecer o funcionamento do compilador é importante para poder extrair o máximo de seus recursos, como por exemplo, durante a fase de depuração de um sistema. Além disso, ele é um programa de computador, e vários são de código livre e podem ser modificados pelo programador para atender uma demanda em especial, caso necessário.

"Compiladores" não se limita apenas a área de compiladores, abrangendo outras áreas como: interpretadores, arquitetura dos ambientes e linguagens de programação, de que forma os programas podem ser otimizados para execução em arquiteturas de computador, projeto de novas arquiteturas, simulação compilada, ferramentas de produtividade de software, processamento de linguagem natural, como extrair desempenho da arquitetura para aplicações científicas, como melhor utilizar os recursos dos compiladores (ou interpretadores) em aplicações e arquiteturas de IoT, dentre outras.

Bibliografia

TCCs

Sites de Professores

Contendo informações úteis sobre compiladores

Ferramentas

Vídeos de interesse

Pascal

Repositório

https://github.com/efurlanm/teaching/tree/main/comp/



Last edited: 2024-11-17