Ciência da Computação, Centro de Informática, (UFPE)
- Professor
- Leopoldo Motta Teixeira (@leopoldomt --- lmt@cin)
- Monitores
- Emanuel Victor (@evfgs --- evfgs@cin)
- Gabriel Henrique Daniel da Silva (@gabrielh10 --- ghds@cin)
- Jailson da Costa Dias (@jailson-dias --- jcd2@cin)
- Jose Murilo Sodre da Mota Filho (@jmsmf --- jmsmf@cin)
- Ramon Saboya Gomes (@RamonSaboya --- rsg3@cin)
- Terça (8h-10h), grad 4
- Sexta (10h-12h), grad 4
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.
- Keith Cooper & Linda Torczon. Engineering a Compiler. 2nd Edition, Morgan Kaufmann, 2012
- Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman. Compilers: Principles, Techniques, and Tools. 2nd Edition, Addison-Wesley, 2006
- Andrew Appel & Jens Palsberg. Modern Compiler Implementation in Java. 2nd edition, Cambridge University Press, 2003
- Michael Scott. Programming Language Pragmatics. 3rd edition, Morgan Kaufmann, 2009
- Dick Grune & Ceriel J.H. Jacobs. Parsing Techniques. 2nd edition, Springer, 2008
- 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
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.
Na disciplina, combinaremos utilizada uma mistura de aulas tradicionais com exercícios e tarefas de programação em sala de aula e para casa.
- Slack
- Google Classroom - Código: mpg9k1
- (
N1
+N2
)/2, onde:N1
=Prova1
(60%) +Exercicios1
(40%)Prova1
= Teste com [assunto dado até o momentoExercicios1
= Tarefas passadas durante primeira unidade
N2
=Prova2
(60%) +Exercicios2
(40%)Prova2
= Teste com [assunto dado a partir de Prova1Exercicios2
= Tarefas passadas durante segunda unidade
Final
: Teste com todo o assunto da matéria
- 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).
Atenção! 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 | Assunto | Atividades |
---|---|---|---|
01 | 27.02.18 (ter) | Introdução, admin | --- |
02 | 02.03.18 (sex) | Conceitos Básicos e Tradução Dirigida por Sintaxe | --- |
-- | 06.03.18 (ter) | FERIADO - Revolução Pernambucana | --- |
03 | 09.03.18 (sex) | Intro Análise Léxica | --- |
04 | 13.03.18 (ter) | Ferramentas para Análise Léxica (JFlex) | --- |
05 | 16.03.18 (sex) | Intro Análise Sintática e Top-Down Parsing | Atividade 1 lançada |
06 | 20.03.18 (ter) | Top-Down parsing - LL(1) parsing | --- |
07 | 23.03.18 (sex) | Bottom-up parsing - LR(0) | Deadline - Atividade 1 |
08 | 27.03.18 (ter) | Bottom-up parsing - LR(1) | Atividade 2 lançada |
-- | 30.03.18 (sex) | FERIADO - Sexta-feira Santa | --- |
09 | 03.04.18 (ter) | LALR Parsing e Intro Análise Semântica | --- |
10 | 06.04.18 (sex) | ASTs e Padrão de Projeto Visitor | --- |
11 | 10.04.18 (ter) | Automatizando Análise Sintática com ANTLR | Deadline - Atividade 2 |
12 | 13.04.18 (sex) | Análise Semântica - Escopo | Atividade 3 lançada |
13 | 17.04.18 (ter) | Análise Semântica - Type Checking | --- |
14 | 20.04.18 (sex) | Exercícios e tirar dúvidas | --- |
15 | 24.04.18 (ter) | 1 Exercício Escolar | --- |
16 | 27.04.18 (sex) | Discussão da Prova e Exercício Visitors | Deadline - Atividade 3 |
-- | 01.05.18 (ter) | FERIADO - Dia do Trabalho | |
17 | 04.05.18 (sex) | Representações Intermediárias de Código - Código de 3 endereços | --- |
18 | 08.05.18 (ter) | Representações Intermediárias de Código - Control-flow Graphs | |
19 | 11.05.18 (sex) | Static Single Assignment e Introdução à Análise de Código | Atividade 4 lançada |
20 | 15.05.18 (ter) | Atividade 4 | --- |
21 | 18.05.18 (sex) | Otimizações Globais e Análise de Fluxo de Dados forward-flow | --- |
22 | 22.05.18 (ter) | Liveness e Análises de Fluxo de Dados backward-flow | --- |
-- | 25.05.18 (sex) | Atividades Acadêmicas Suspensas | Deadline - Atividade 4 |
-- | 29.05.18 (ter) | Atividades Acadêmicas Suspensas | --- |
23 | 01.06.18 (sex) | Dominance | --- |
24 | 05.06.18 (ter) | Ambientes de Execução | Atividade 5 lançada |
25 | 08.06.18 (sex) | Ambientes de Execução | --- |
26 | 12.06.18 (ter) | Geração de Código | --- |
27 | 15.06.18 (sex) | Geração de Código | --- |
28 | 19.06.18 (ter) | Geração de Código | --- |
29 | 22.06.18 (sex) | Jogo do Brasil | Deadline - Atividade 5 |
30 | 26.06.18 (ter) | Geração de Código | --- |
31 | 29.06.18 (sex) | 2 Exercício Escolar | --- |
32 | 03.07.18 (ter) | Tirar Dúvidas | --- |
33 | 06.07.18 (sex) | Segunda Chamada | --- |
34 | 10.07.18 (ter) | Tirar Dúvidas | --- |
35 | 13.07.18 (sex) | Prova Final | --- |