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: PC-07; ensalamento; Terças e quintas às 15:30
Analisador léxico: Flex
Analisador sintático: Bison
Nota = Prova * 40% + Trabalho * 60%
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 aqui.
Geradores LL(1), SLR e LR(1) podem ser encontrados aqui: JSMachines salvos no github.
O trabalho será gerenciado pelo GitHub Classroom. Portanto, todos devem ter conta no GitHub.
Mais informações em breve.
| Data | Aula | Descrição | Links ou referência (Livro do Dragão) |
|---|---|---|---|
| 24/02 | Aula 1 | Introdução | Breve história e fases de um compilador |
| 26/02 | Aula 2 | Análise sintática - Intro, ambiguidade, recursão, fatoração a esquerda | cap. 4.2 e 4.3 |
| 03/03 | Aula 3 | Análise sintática Top-down (LL) - Implementação manual | cap. 2.4, 2.5 e 4.4 |
| 05/03 | Aula 4 | Análise sintática Top-down (LL) - Implementação manual (Lab) | exercício |
| 10/03 | Aula 5 | Análise sintática Top-down (LL) - Implementação via pilha | cap 4.4 |
| 12/03 | Aula 6 | Análise sintática Bottom-up - SLR | cap 4.5, 4.7 |
| 17/03 | Aula 7 | Análise sintática Bottom-up - LR canônico | cap 4.7 |
| 19/03 | Aula 8 | Análise sintática Bottom-up - LR canônico | cap 4.7 |
| 24/03 | Aula 9 | Análise sintática Bottom-up - LALR | cap 4.7 |
| 26/03 | Aula 10 | Análise sintática Bottom-up - LALR | cap 4.7 |
| 31/03 | Aula 11 | Exercícios | |
| 02/04 | Aula 12 | Prova 1 | |
| 07/04 | Aula 13 | Analisador léxico (Flex) | código de exemplo |
| 09/04 | Aula 14 | Analisador sintático (Bison) | código de exemplo |
| 14/04 | Aula 15 | LLVM-IR | conteúdo no github |
| 16/04 | Aula 16 | LLVM-IR | conteúdo no github |
| 21/04 | Feriado | ||
| 23/04 | Aula 17 | Projeto NanoC - Implementação de uma tabela de símbolos (Lab) | |
| 28/04 | Aula 18 | Projeto NanoC - Expressões simples (Lab) | |
| 30/04 | Aula 19 | Projeto NanoC - Expressões simples (Lab) | |
| 05/05 | Aula 20 | Projeto NanoC - Float e cast implícito (Lab) | |
| 07/05 | Aula 21 | Projeto NanoC - Chamada de funções (Lab) | |
| 12/05 | Aula 22 | Projeto NanoC - Repetição (Lab) | |
| 14/05 | Aula 23 | Tira-dúvidas Trabalho | |
| 19/05 | Aula 24 | Tira-dúvidas Trabalho | |
| 21/05 | Aula 25 | Tira-dúvidas Trabalho | |
| 26/05 | Sem aula | ||
| 28/05 | Sem aula | ||
| 02/06 | Sem aula | ||
| 04/06 | Feriado | ||
| 09/06 | Aula 26 | Apresentação Trabalho | |
| 11/06 | Aula 27 | Apresentação Trabalho | |
| 16/06 | Aula 28 | Apresentação Trabalho | |
| 18/06 | Aula 29 | Apresentação Trabalho | |
| 23/06 | Aula 30 | Apresentação Trabalho | |
| 25/06 | Reservado para Segunda Chamada | ||
| 30/06 | Exame Final |