Compiladores
Compiladores são programas essenciais que traduzem código-fonte escrito em linguagens de programação de alto nível para código de máquina ou linguagem intermediária, possibilitando a execução eficiente em computadores. Eles desempenham um papel crucial no desenvolvimento de software, otimizando o desempenho e detectando erros durante o processo de compilação.
Cronograma de Aulas
Navegue pelo conteúdo do curso através dos links abaixo:
1
  • Fundamentos da compilação
  • Diferença entre compiladores e interpretadores
  • Estrutura geral de um compilador
  • Prática: Instalação de ambiente e visualização de exemplo simples de compilação.
2
  • Tokens, lexemas e padrões
  • Expressões regulares e autômatos finitos
  • Ferramentas: Lex/Flex (ou implementações em Python)
  • Prática: Criação de analisador léxico simples
3
  • Gramáticas livres de contexto
  • Derivações, árvores de derivação
  • Ambiguidades e fatoração
  • Prática: Construção de uma gramática para expressões aritméticas
4
  • Técnicas de parsing descendente
  • Implementação de parser LL(1)
  • Prática: Implementação manual de um parser recursivo
5
  • Introdução a parsing bottom-up
  • Tabelas LR(0), SLR, LR(1)
  • Ferramentas: Yacc/Bison
  • Prática: Geração de parser usando ferramenta automática
6
Aula 6 – Análise Semântica
  • Tipagem e verificação semântica
  • Tabelas de símbolos
  • Detecção de erros semânticos
  • Prática: Analisador semântico simples com verificação de tipos
7
Aula 7 – Representações Intermediárias
  • Árvores de sintaxe abstrata (AST)
  • Notações: tripla, quadrupla, código de 3 endereços
  • Prática: Geração de árvore de sintaxe abstrata
8
Aula 8 – Geração de Código
  • Código intermediário → código de máquina
  • Alocação de registradores
  • Prática: Geração de código simples para uma linguagem intermediária
9
Aula 9 – Otimização de Código
  • Técnicas de otimização: dead code elimination, constant folding, etc.
  • Prática: Aplicação manual de otimizações simples
10
Aula 10 – Back-end e Geração Final de Código
  • Geração de código assembly (simples)
  • Organização do sistema de execução
  • Prática: Geração de código final para programa básico
11
Aula 11 – Introdução aos Autômatos e Linguagens Formais
  • Autômatos finitos, autômatos com pilha
  • Linguagens regulares e livres de contexto
  • Prática: Simuladores de autômatos
12
Aula 12 – Aplicações de Grafos em Compiladores
  • Grafos de fluxo de controle e dependência
  • Análise de dependências para otimização
  • Prática: Montagem de grafo de controle para análise
13
Aula 13 – Projeto Guiado de Compilador (Parte 1)
  • Planejamento em grupo: linguagem-alvo e escopo
  • Definição da gramática e tokens
  • Prática: Esboço inicial do compilador com análise léxica e sintática
14
Aula 14 – Projeto Guiado de Compilador (Parte 2)
  • Implementação de semântica, geração de código
  • Otimizações básicas
  • Prática: Integração dos módulos do compilador
15
Aula 15 – Apresentação e Revisão Final
  • Apresentação dos projetos
  • Revisão dos conceitos principais
  • Avaliação final prática e/ou teórica