Compiladores


Período letivo 2019.2:


Avisos:


Calendário de final de período:


Projeto:


Avaliações:


Slides:

Exemplo completo:

Site do livro:

Literatura complementar:

Mini-Triangle:

Outras referências:


Aulas ministradas:

Aula 01 - 19/09/2019 - Apresentação e motivação.
Aula 02 - 24/09/2019 - Linguagens de alto e baixo nível. Linguagens fonte e objeto. Tipos de processadores de linguagens. Especificação de linguagens de programação com gramáticas livres de contexto.
Aula 03 - 26/09/2019 - Especificação de linguagens de programação. Método formal e informal. Sintaxe livre de contexto, sintaxe dependente de contexto e semântica. Uso de gramáticas livres de contexto. Exemplo mini-Triangle.
Aula 04 - 01/10/2019 - Processadores de linguagens. Diagramas-T. Técnica de bootstrapping e aplicações.
Aula 05 - 03/10/2019 - Fases de compilação. Descrição detalhada com exemplos.
Aula 06 - 08/10/2019 - Análise léxica - conceitos.
Aula 07 - 10/10/2019 - Análise léxica - implementação.
Aula 08 - 15/10/2019 - Análise sintática. Métodos descendente e ascendente. first_k. Gramáticas e linguagens LL(k).
Aula 09 - 17/10/2019 - Gramáticas e linguagens LR(k). LL(k) x LR(k). Uso do contexto na análise descendente.
Aula 10 - 22/10/2019 - follow_k. Casos particulares. Recursão à esquerda. Exemplos.
Aula 11 - 24/10/2019 - Manipulação gramatical. Exercícios. Construção de analisadores sintáticos usando o método recursivo descendente.
Aula 12 - 29/10/2019 - Construção de analisadores sintáticos usando o método recursivo descendente.
Aula 13 - 31/10/2019 - Montagem da AST. Exemplo mini-Triangle.
Aula 14 - 05/11/2019 - Visitor. Exibição da AST. Exemplo completo.
Aula 15 - 07/11/2019 - Orientação de projeto.
Aula 16 - 14/11/2019 - Prova 1.
Aula 17 - 19/11/2019 - Análise de contexto. Identificação. Tabela de Símbolos. Blocos Monolíticos e Blocos Planos.
Aula 18 - 21/11/2019 - Blocos Aninhados. Verificação de Tipos.
Aula 19 - 26/11/2019 - Representação de dados. Tipos simples, agregados heterogênos e agregados homogêneos (vetores).
Aula 20 - 28/11/2019 - Agregados homogêneos (matrizes).
Aula 21 - 03/12/2019 - Avaliação de expressões. Máquina de Registradores e Máquina de Pilha.
Aula 22 - 05/12/2019 - Exemplo de geração de código para Máquina de Pilha. Alocação de memória estática e automática (variáveis locais apenas).
Aula 23 - 10/12/2019 - Alocação automática e acesso à variáveis não-locais. LE, LD, ER.
Aula 24 - 12/12/2019 - Subrotinas, passagem de parâmetros por valor e retorno de valor de função. Exemplos.
Aula 25 - 17/12/2019 - Cálculo do link estático. Passagem de parâmetros por endereço. Recursão. Exemplos. Geração de código.
Aula 26 - 19/12/2019 - Funções e templates de código.
Aula 27 - 16/01/2020 - Detalhamento das instruções CALL e RETURN. Alocação dinâmica de memória (HEAP).
Aula 28 - 21/01/2020 - Orientação à objetos e interpretação.
Aula 29 - 23/01/2020 - Conclusões finais.
Aula 30 - 28/01/2020 - Prova 2.
Aula 31 - 30/01/2020 - Apresentação e entrega dos projetos.