if688.github.io
if688.github.io copied to clipboard
Site da disciplina IF688 - Teoria e Implementação de Linguagens Computacionais, Ciência da Computação, CIn-UFPE
IF688 - Teoria e Implementação de Linguagens Computacionais
Ciência da Computação & Engenharia da Computação, Centro de Informática, (UFPE)
Instrutor
-
Professor: Leopoldo Motta Teixeira (@leopoldomt --- lmt@cin)
-
Monitores:
- Beatriz de Araújo Andrade (@BeatrizA2 --- baa@cin)
- Beatriz de Oliveira Férre (@biaferre --- bof@cin)
- Bruno de Figueirêdo Lima (@Brunonaive03 --- bfl3@cin)
- Diogo Pedro de França Silva (@DiogoPedro --- dpfs@cin)
- Eliab Bernardino de Paula Junior (@eliab2107 --- ebpj@cin)
- Ernesto Gonçalves de Lima Neto (@ergdln --- egln@cin)
- Geovany Ícaro Lima Nunes (@Icaro-Nunes --- giln@cin)
- Luiza Diniz Mendes Monteiro Luna (@dinizluiza --- ldmml@cin)
- Pedro Augusto de Almada Lobo Fonseca (@pedroalfonseca --- paalf@cin)
Horário e Local de Aulas
- Terça (13h-15h), Sala E233
- Quinta (15h-17h), Sala E233
Ementa
Este curso explora os princípios, algoritmos, e estruturas de dados envolvidos na teoria e implementação de compiladores. O conteúdo planejado inclui uma introdução aos princípios e técnicas de construção de compiladores, conceitos básicos da teoria de linguagens, análise léxica, análise sintática, análise semântica, representação de código intermediário, ambientes de execução, análise estática, otimização de código, geração de código.
Bibliografia Sugerida
- Keith Cooper & Linda Torczon. Engineering a Compiler. 2nd Edition, Morgan Kaufmann, 2012
- Robert Nystrom. Crafting interpreters. Genever Benning, 2021.
- Jeremy G. Siek. Essentials of Compilation: An Incremental Approach in Racket/Python. 1st Edition, MIT Press, 2023
- Dick Grune, Kees Van Reeuwijk, Henri E. Bal, Ceriel J. H. Jacobs, and Koen Langendoen. Modern Compiler Design. 2nd Edition, Springer, 2012
Bibliografia Complementar
- Andrew Appel & Jens Palsberg. Modern Compiler Implementation in Java. 2nd edition, Cambridge University Press, 2003
- Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman. Compilers: Principles, Techniques, and Tools. 2nd Edition, Addison-Wesley, 2006
- Michael Scott. Programming Language Pragmatics. 3rd edition, Morgan Kaufmann, 2009
- Dick Grune & Ceriel J.H. Jacobs. Parsing Techniques. 2nd edition, Springer, 2008
- Terence Parr. Language Implementation Patterns. 1st edition, Pragmatic Bookshelf, 2010
- Terence Parr. The Definitive ANTLR 4 Reference. 2nd edition, Pragmatic Bookshelf, 2013
- Ronald Mak. Writing Compilers and Interpreters: A Modern Software Engineering Approach Using Java. 1st edition, John Wiley & Sons, 2009
Objetivos
O objetivo da disciplina é fornecer fundamentos para desenvolvimento da compreensão da teoria e prática de compiladores, e de questões envolvidas na implementação de linguagens.
Metodologia
Na disciplina, utilizaremos uma mistura de aulas tradicionais com exercícios e tarefas de programação em sala de aula e para casa.
Recursos
- Discord
- Google Classroom
- Github Classroom - Ver instruções no Google Classroom
Avaliação
-
Nota
= (Atividades
x 5 +Provas
x 5) / 10-
Atividades
= Atividades de programação -
Provas
= Exercícios escolares
-
-
Final
- Observações:
- Entrega fora do prazo: redutor de 1 ponto por dia de atraso.
- Atraso máximo: 1 (uma) semana. Após esse prazo, será dada nota zero para a respectiva atividade de avaliação.
- Trabalhos “CTRL-C + CTRL-V” terão nota zero (vale tanto para cópia de colegas, como para trabalhos copiados da internet).
Plano de Ensino
Este plano de ensino está sujeito a alterações durante o semestre, visite frequentemente a página para obter a versão mais atualizada, ou acompanhe os updates no repositório.
Data | Dia | Conteúdo Programático | Atividades Associadas |
---|---|---|---|
24.10.23 | Terça | Introdução, admin | |
26.10.23 | Quinta | Análise Léxica | |
31.10.23 | Terça | Implementando Analisadores Léxicos | |
02.11.23 | Quinta | FERIADO - DIA DE FINADOS | |
07.11.23 | Terça | Análise Sintática Top-Down - Intro | |
09.11.23 | Quinta | Análise Sintática Top-Down - LL(1) Parsing | |
14.11.23 | Terça | Análise Sintática Top-Down - Recursive Descent Parsing | |
16.11.23 | Quinta | Análise Sintática Bottom-Up - Intro e LR(0) | |
21.11.23 | Terça | Análise Sintática Bottom-Up - LR(1) Parsing | |
23.11.23 | Quinta | Análise Semântica - Intro e ASTs | |
28.11.23 | Terça | Análise Semântica - ASTs e Visitors | |
30.11.23 | Quinta | Análise Semântica - Tipos, Escopo, Tabelas de Símbolos | |
05.12.23 | Terça | APS - Exercícios | |
07.12.23 | Quinta | APS - Exercícios | |
12.12.23 | Terça | Análise Semântica - Tabelas de Símbolos e Type Checking | |
14.12.23 | Quinta | Revisão e tirar dúvidas | |
19.12.23 | Terça | Revisão e tirar dúvidas | Prova remarcada por conta da chuva |
21.12.23 | Quinta | 1 Exercício Escolar | |
26.12.23 | Terça | Recesso Escolar | --- |
28.12.23 | Quinta | Recesso Escolar | --- |
02.01.24 | Terça | Recesso Escolar | --- |
04.01.24 | Quinta | Recesso Escolar | --- |
09.01.24 | Terça | Recesso Escolar | --- |
11.01.24 | Quinta | Recesso Escolar | --- |
16.01.24 | Terça | Recesso Escolar | --- |
18.01.24 | Quinta | Recesso Escolar | --- |
23.01.24 | Terça | Recesso Escolar | --- |
25.01.24 | Quinta | Recesso Escolar | --- |
30.01.24 | Terça | Representação Intermediária de Código | |
01.02.24 | Quinta | Representação Intermediária de Código | |
06.02.24 | Terça | APS - ANTLR | |
08.02.24 | Quinta | APS - ANTLR | |
13.02.24 | Terça | CARNAVAL | |
15.02.24 | Quinta | Análise e Otimização de Código | |
20.02.24 | Terça | Análise e Otimização de Código | |
22.02.24 | Quinta | Análise e Otimização de Código | |
27.02.24 | Terça | Ambientes de Execução | |
29.02.24 | Quinta | Geração de Código | |
05.03.24 | Terça | Geração de Código | |
07.03.24 | Quinta | Geração de Código | |
12.03.24 | Terça | Revisão | |
14.03.24 | Quinta | 2 Exercício Escolar | |
19.03.24 | Terça | Segunda Chamada | |
21.03.24 | Quinta | Tirar dúvidas | |
26.03.24 | Terça | Prova Final | |
28.03.24 | Quinta | Divulgação notas |