High Performance and Efficient Systems
Grupo de Pesquisa em Arquitetura de Computadores, Segurança & Criptografia.
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
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).
Nota = Prova * 50% + Trabalho * 50%
Os capítulos de interesse do livro do dragão (primeira edição) são os seguintes:
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.
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.
| 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 |