Cronograma - Compiladores 2026-1
Bem-vindo à disciplina de Compiladores
Esta é a página da disciplina de Compiladores do curso de Engenharia de Computação do CEFET-MG, semestre 2026-1.
Compiladores é uma disciplina fundamental que explora os processos de tradução de linguagens de alto nível para código executável. Com uma carga horária de 4 horas-aula semanais, abordaremos de forma aprofundada as fases de um compilador.
O Projeto Prático: Compilador Java-Pascal
Nesta edição da disciplina, adotaremos uma abordagem “mão na massa” modernizada. Cada aluno irá construir, passo a passo, um compilador completo para uma sublinguagem de Pascal, utilizando a linguagem Java como base e tendo como alvo a Java Virtual Machine (JVM).
O projeto é dividido em 7 etapas incrementais: 1. Infraestrutura e AST: Definição de objetos e tabela de símbolos inicial. 2. Analisador Léxico: Implementação manual de um autômato finito. 3. Analisador Sintático LL: Parser descendente recursivo manual. 4. Analisador Sintático LR: Uso de geradores modernos (ANTLR4). 5. Semântica 1: Escopo, visibilidade e preenchimento de tabelas. 6. Semântica 2: Verificação de tipos e controle de fluxo. 7. Geração de Código: Geração de Bytecode JVM real (Arquivos .class).
Planos de Ensino 2026-1
Cronograma
As aulas ocorrem às segundas-feiras às 13:00 e às quintas-feiras às 16:35 na Sala 34.
| Aula | Data | Conteúdo | Capítulo | Slides | Questionário |
|---|---|---|---|---|---|
| 1 | 23/02 | Apresentação da Disciplina e Plano de Ensino | Capítulo | Slides | - |
| 2 | 26/02 | Introdução aos Compiladores | Capítulo | Slides | - |
| 3 | 02/03 | Fases de um Compilador | Capítulo | Slides | Quest |
| 4 | 05/03 | Análise Léxica: Conceitos e Autômatos | Capítulo | Slides | Quest |
| 5 | 09/03 | Expressões Regulares e Scanners | Capítulo | Slides | Quest |
| 6 | 12/03 | Ferramentas: Flex | Capítulo | Slides | Quest |
| 7 | 16/03 | Análise Sintática: Fundamentos | Capítulo | Slides | Quest |
| 8 | 19/03 | Gramáticas Livres de Contexto | Capítulo | Slides | Quest |
| 9 | 23/03 | Análise Sintática Descendente (LL) | Capítulo | Slides | Quest |
| 10 | 26/03 | Exemplo de Implementação de Parser LL | Capítulo | Slides | Quest |
| 11 | 30/03 | Análise Sintática Ascendente (LR) | Capítulo | Slides | Quest |
| 12 | 02/04 | Tabelas de Parsing LR/LALR | Capítulo | Slides | Quest |
| 13 | 06/04 | Ferramentas: Bison/Yacc | Capítulo | Slides | Quest |
| 14 | 09/04 | Projeto de Linguagens e AST | Capítulo | Slides | Quest |
| 15 | 13/04 | Análise Semântica: Tabelas de Símbolos | Capítulo | Slides | Quest |
| 16 | 16/04 | Verificação de Tipos e Escopo | Capítulo | Slides | Quest |
| - | 20/04 | Recesso (Ponte Tiradentes) | - | - | - |
| - | 23/04 | Feriado (São Jorge - Regional) | - | - | - |
| 17 | 27/04 | Prova 1 | - | - | - |
| 18 | 30/04 | Geração de Código Intermediário (IR) | Capítulo | Slides | Quest |
| 19 | 04/05 | Representação SSA | Capítulo | Slides | Quest |
| 20 | 07/05 | Introdução ao LLVM IR | Capítulo | Slides | Quest |
| 21 | 11/05 | Gerenciamento de Memória e Ambientes de Runtime | Capítulo | Slides | Quest |
| 22 | 14/05 | Alocação de Registros | Capítulo | Slides | Quest |
| 23 | 18/05 | Otimização de Código: Peephole e Local | Capítulo | Slides | Quest |
| 24 | 21/05 | Análise de Fluxo de Dados | Capítulo | Slides | Quest |
| 25 | 25/05 | Otimizações Globais | Capítulo | Slides | Quest |
| 26 | 28/05 | Geração de Código de Máquina | Capítulo | Slides | Quest |
| 27 | 01/06 | Seleção de Instruções | Capítulo | Slides | Quest |
| 28 | 04/06 | Escalonamento de Instruções | Capítulo | Slides | Quest |
| 29 | 08/06 | Tópicos Avançados: JIT e Máquinas Virtuais | Capítulo | Slides | Quest |
| 30 | 11/06 | Compilação para WebAssembly (WASM) | Capítulo | Slides | Quest |
| 31 | 15/06 | Revisão para Prova 2 | - | - | - |
| 32 | 18/06 | Prova 2 | - | - | - |
| 33 | 22/06 | Apresentação de Trabalhos - Parte 1 | Capítulo | Slides | Quest |
| 34 | 25/06 | Apresentação de Trabalhos - Parte 2 | Capítulo | Slides | Quest |
| 35 | 29/06 | Seminários de Linguagens Modernas | Capítulo | Slides | Quest |
| 36 | 02/07 | Prova Substitutiva | - | - | - |
| 37 | 06/07 | Prova Final | - | - | - |
Distribuição de Pontos
As atividades avaliativas estão divididas entre duas provas teóricas (60%) e o projeto prático incremental (40%). O professor poderá aplicar questionários adicionais a cada etapa.
| Atividade | Valor | Data Entrega |
|---|---|---|
| Projeto Etapa 1: AST e Estruturas | 02 | 16/03 |
| Projeto Etapa 2: Léxico Manual | 04 | 30/03 |
| Projeto Etapa 3: Sintático LL Manual | 04 | 13/04 |
| Prova 1 (Teórica) | 30 | 27/04 |
| Projeto Etapa 4: Gramática ANTLR4 | 04 | 11/05 |
| Projeto Etapa 5: Semântica (Escopo) | 06 | 25/05 |
| Projeto Etapa 6: Semântica (Tipos) | 12 | 08/06 |
| Prova 2 (Teórica) | 30 | 22/06 |
| Projeto Etapa 7: Geração de Bytecode | 08 | 29/06 |
| Total | 100 | - |
[!NOTE] A Etapa 7 é o fechamento do projeto e sua avaliação está integrada aos pesos das etapas anteriores e apresentação final.
: {tbl-colwidths=“[60,20,20]”}
Conteúdo
Última atualização: r Sys.Date()