Na disciplina de Compiladores, apresentamos as etapas necessárias para transformar código de uma linguagem de alto nível para código de máquina. Através desse processo, empregamos vários conceitos teóricos e práticos da Ciência da Computação, dentre eles a Teoria dos Autômatos, Linguagens Formais, Estruturas de Dados e Otimização. Os alunos também são motivados a raciocinar sobre um projeto de software com várias etapas com interfaces bem definidas e representações intermediárias de dados.
A disciplina consiste de aulas expositivas sobre as etapas da compilação. O foco está na apresentação dos algoritmos para cada fase, analisando as vantagens e desvantagens de cada solução. Além de exercícios teóricos, atividades de implementação são utilizadas para fixar os conceitos. Dada a necessidade de adaptação da disciplina para a modalidade remota, adotamos os seguintes métodos:
O horário dos encontros será definido com a turma.
Os alunos são avaliados por atividades escritas. As atividades são liberadas semanalmente. A frequência da semana será dada pela entrega da atividade. A cada 3 ou 4 atividades, uma nota é definida. Ao total, temos três notas (ou três conjuntos de atividades), valendo de 0 a 10. Um trabalho de implementação extra valerá como uma quarta nota. Ao final, a média será definida pela média aritmética das três maiores notas.
Data | Assunto | Comentários | Vídeos | Atividades | Notas |
---|---|---|---|---|---|
01/07/2020 | Introdução a Disciplina | Conteúdo, Avaliação, Ambiente no Slack e Bitbucket | |||
06/07/2020 | Introdução a Compiladores | Fluxograma geral do processo de compilação | Atividade 01 | 1ª Nota: Introdução, Análise Léxica e Gramáticas Livres de Contexto | |
08/07/2020 | Análise Léxica | Processo de Varredura, Expressões Regulares (ER), Autômatos e suas Equivalências | |||
13/07/2020 | Análise Léxica | Analisador Léxico para TINY e a Ferramenta Lex | Atividade 02 | ||
15/07/2020 | Gramáticas Livres de Contexto | Análise Sintática, Gramáticas Livres de Contexto, Árvores | |||
20/07/2020 | Gramáticas Livres de Contexto | Ambigüidade e Sintaxe da Linguagem TINY | Compiladores 16/03/2020 | Atividade 03 | |
22/07/2020 | Análise Sintática Descendente | Análise Sintática Descendente Recursiva | Compiladores 18/03/2020 | ||
27/07/2020 | Análise Sintática Descendente | Algoritmo LL(1), Remoção de Recursão à Esquerda e Fatoração | Compiladores 23/03/2020 | Atividade 04 | 2ª Nota: Análise Sintática |
29/07/2020 | Análise Sintática Descendente | Conjuntos Primeiro e de Sequência | Compiladores 25/03/2020 | ||
03/08/2020 | Análise Sintática Descendente | Um analisador sintático para a linguagem TINY e Recuperação de Erros | Compiladores 30/03/2020 | Atividade 05 | |
05/08/2020 | Análise Sintática Ascendente | Introdução a Análise Sintática Ascendente, Itens LR(0) e Análise LR(0). | Compiladores 01/04/2020 | ||
10/08/2020 | Análise Sintática Ascendente | Análise Sintática SLR(1) | Compiladores 06/04/2020 | Atividade 06 | |
12/08/2020 | Análise Sintática Ascendente | Análise LR(1) e LALR(1) | Compiladores 08/04/2020 | ||
17/08/2020 | Análise Sintática Ascendente | YACC Parte Um, até depuração. | Compiladores 13/04/2020 | Atividade 07 | |
19/08/2020 | Análise Sintática Ascendente | YACC Parte Dois e Tratamento de Erros. | Compiladores 15/04/2020 | ||
24/08/2020 | Análise Semântica | Introdução à Análise Semântica. | Compiladores 20/04/2020 | Atividade 08 | 3ª Nota: Análise Semântica. |
26/08/2020 | Análise Semântica | Ordenação Topológica do Grafo de Dependências, Atributos herdados e sintetizados. | Compiladores 22/04/2020 | ||
31/08/2020 | Análise Semântica | Introdução aos Algoritmos para Cálculo de Atributos Herdados e Sintetizados | Compiladores 27/04/2020 | Atividade 09 | |
02/09/2020 | Análise Semântica | Finalizando Algoritmos para Cálculo de Atributos e iniciando Tabela de Símbolos | Compiladores 29/04/2020 | ||
07/09/2020 | Análise Semântica | Continuação sobre Tabela de Símbolos, falando de Escopo e Declarações. | Compiladores 04/05/2020 | Atividade 10 | |
09/09/2020 | Análise Semântica | Finalizando Tabela de Símbolos usando Regras Semânticas. | Compiladores 06/05/2020 | ||
14/09/2020 | Análise Semântica | Tipos de Dados Primitivos e Estruturados na Tabela de Símbolos | Compiladores 11/05/2020 | Atividade 11 | |
16/09/2020 | Análise Semântica | Equivalência de Tipos | Compiladores 13/05/2020 | ||
21/09/2020 | Análise Semântica | Analisador Semântico da Linguagem TINY. | Compiladores 18/05/2020 | Atividade 12 | |
23/09/2020 | Ambientes de Execução | Introdução a Organização da Memória e Ambientes de Execução Estáticos. | Compiladores 20/05/2020 | ||
28/09/2020 | Ambientes de Execução | Introdução a Ambientes de Execução em Pilha | Compiladores 25/05/2020 | Atividade 13 | 4ª Nota: Ambientes de Execução. |
30/09/2020 | Ambientes de Execução | Exemplo do crescimento da Pilha no Depurador e Procedimentos Aninhados. | Compiladores 27/05/2020 | ||
05/10/2020 | Ambientes de Execução | Finalizando Ambientes de Execução. | Compiladores 01/06/2020 | Atividade 14 | |
07/10/2020 | |||||
12/10/2020 | Atividade 15 | ||||
14/10/2020 | |||||
19/10/2020 | Atividade 16 |