2026/2

Informações gerais da disciplina, bem como links para materiais e etc., estão na página do GitHub.

Sala de aula: ??-??; ensalamento; Segunda e quartas às 17:30


Ferramentas e Infraestrutura tecnológica

Gerador de analisador sintático (e também léxico): ANTLR4, Docs, Docs C++.

Infraestrutura básica de compilação: LLVM, LangRef (LLVM-IR).

Infraestrutura multi-nível de compilação (abstrações acima do LLVM): MLIR, Dialetos (especialmente builtin, arith, memref e scf/cf, além do LLVM).


Avaliação

Nota = Prova * 50% + Trabalho * 50%

Datas importantes

  • Prova: ??/??, simulado
  • Trabalho: ??/?? até 12h

Conteúdo Teórico (Analisador sintático - parser)

Os capítulos de interesse do livro do dragão (primeira edição) são os seguintes:

  • Cap 4.1 - O papel do analisador sintático (pode ignorar tratamento de erros)
  • Cap 4.2 - Gramáticas Livre de contexto
  • Cap 4.3 - Escrevendo uma gramática (especialmente: eliminar ambiguidade, eliminar recursão a esquerda e fatoração a esquerda
  • Cap 4.4 - Análise sintática top-down (pode ignorar a recuperação de erros); Considere também o Cap 2.4 e 2.5 para consrtruir um programa manualmente.
  • Cap 4.5 - Análise sintática bottom-up (serve mais para ajudar no entendimento geral)
  • Cap 4.7 - Analisadores sintáticos LR

Caso esteja com a segunda edição do livro, aparentemente a única mudança é que o Cap 4.7 foi dividido em dois capítulos: 4.6 e 4.7. No caso, seria o capítulo sobre parsers LR. O que precisa ser estudado é o SLR e LR canônico ( ou LR(1) ), e analisadores de precedência podem ser ignorados.

As principais fórmulas/procedimentos/operações/algoritmos estão disponíveis nesta cheat sheet.

Uma lista de exercícios pode ser encontrada, embora faltam exercícios de LALR aqui.

Geradores LL(1), SLR e LR(1) podem ser encontrados aqui: JSMachines salvos no github.


Trabalho

O trabalho será feio em grupos de ?? alunos, e deverá ser apresentado e defendido em sala de aula.

Para a avaliação do trabalho será usada a metodologia de avaliação por pares "peer assessment". Um grupo apresenta e defende seu trabalho enquanto outro grupo avalia e oferece um retorno (feedback) sobre o trabalho, e vice-versa.

A avaliação será de acordo com o formulário disponível pelo professor, sendo que a nota final será ponderada com a nota do professor (50%) e a média das avaliações dos alunos (50%). Caso fique evidente um certo acordo entre os alunos para que todos tenham uma avaliação boa, a avaliação dos alunos poderá ser completamente desconsiderada.


Cronograma

Data Aula Descrição Links ou referência (Livro do Dragão)
03/08 Aula 1 Introdução Breve história e fases de um compilador
05/08 Aula 2 Análise sintática Top-down (LL) - Implementação manual cap. 2.4, 2.5 e 4.4
10/08 Aula 3 Análise sintática Top-down (LL) - Implementação manual (Lab) exercício
12/08 Aula 4 Gerador de analisador sintático - ANTLR4 (Lab)
17/08 Aula 5 SSA, Control-flow e otimizações
19/08 Aula 6 LLVM-IR conteúdo no github
24/08 Aula 7 LLVM-IR conteúdo no github
26/08 Aula 8 MLIR
31/08 Aula 9 Tabela de símbolos e Análise semântica
02/09 Aula 10 Sistema de tipos e tipos algébricos
07/09 Feriado: Independência
09/09 Aula 11 ANTLR+MLIR (Lab)
14/09 Aula 12 SACI 2026 (Semana Acadêmica de Computação e Informática)
16/09 Aula 13 SACI 2026 (Semana Acadêmica de Computação e Informática)
21/09 Aula 14 ANTLR+MLIR (Lab)
23/09 Aula 15 ANTLR+MLIR (Lab)
28/09 Aula 16 Análise sintática - ambiguidade, recursão, fatoração a esquerda cap. 4.2 e 4.3
30/09 Aula 17 Análise sintática Top-down (LL) - Implementação via pilha cap 4.4
05/10 Aula 18 Análise sintática Bottom-up - SLR cap 4.5, 4.7
07/10 Aula 19 Análise sintática Bottom-up - LR canônico cap 4.7
12/10 Feriado: N. Sra. Aparecida.
14/10 Aula 20 Análise sintática Bottom-up - LR canônico cap 4.7
19/10 Aula 21 Análise sintática Bottom-up - LALR cap 4.7
21/10 Aula 22 Análise sintática Bottom-up - LALR cap 4.7
26/10 Aula 23 Prova
28/10 Feriado: Dia do Servidor Público.
02/11 Feriado: Finados.
04/11 Aula 24 Apresentação de trabalho
09/11 Aula 25 Apresentação de trabalho
11/11 Aula 26 Apresentação de trabalho
16/11 Aula 27 Apresentação de trabalho
18/11 Aula 28 Apresentação de trabalho
23/11 Aula 29 Apresentação de trabalho
25/11 Aula 30 Apresentação de trabalho
30/11 Sem aula
02/12 Reservado para Segunda Chamada
07/12 Exame Final
09/12