Compiladores
Período letivo 2019.2:
Avisos:
- Não haverá aula no próximo dia 12/11
- A prova 1 acontecerá no dia 14/11
Calendário de final de período:
- Aula 23: 10/12/2019
- Aula 24: 12/12/2019
- Aula 25: 17/12/2019
- Aula 26: 19/12/2019
- Recesso: 21/12/2019 a 05/01/2020
- Férias: 06/01/2010 a 15/01/2020
- Aula 27: 16/01/2020
- Aula 28: 21/01/2020
- Aula 29: 23/01/2020
- Aula 30 (prova 2): 28/01/2020
- Aula 31 (apresentação e entrega de trabalhos): 30/01/2020
- Prova final: 06/02/2020
- Final do período letivo: 10/02/2020
Projeto:
Avaliações:
Slides:
Exemplo completo:
Site do livro:
Literatura complementar:
Mini-Triangle:
Outras referências:
- AWK:
- Algol 68:
- Compiladores:
- História das linguagens de programação:
- História dos sistemas operacionais:
- Linguagens de programação:
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.