| Departamento | Computação |
| Unidade | Instituto de Ciências Exatas e Biológicas |
| Carga horária semanal | 4 teóricas |
| Duração | 18 semanas |
| Carga horária semestral | 72 horas-aula |
|
Pré-requisitos | BCC221 – Programação Orientada a Objetos |
| BCC244 – Teoria da Computação | |
| Cursos | Ciência da Computação: 6o período |

Torben Ægidius Mogensen. Introduction to Compiler Design. Inglês. 2a ed. Springer, 2017. isbn:
978-3-319-66965-6.

Andrew W Appel. Modern Compiler Implementation in ML. Inglês. 1a ed. Cambridge University
Press, 1997. isbn: 0-521-60764-7. Livro-texto.

Alfred V Aho, Monica S Lam, Ravi Sethi e Jeffrey D Ullman. Compiladores: Princípios, Técnicas
e Ferramentas. Português. 2a ed. Pearson, 2007. isbn: 9788588639249.

Compiler Design: Syntactic and Semantic Analysis. Inglês. Springer, 2013. isbn: 978-3642175398.
Ao final do curso é esperado que o aluno:
A avaliação será feita por um conjunto de provas escritas e um conjunto de trabalhos práticos. A tabela a seguir enumera as atividades de avaliação previstas, com os respectivos pesos na formação da nota final, e a data de realização da avaliação.
| Avaliação | Peso | Data | Assuntos | |
| Prova 1 | 3 | 08/05/2019 | qua | Introdução, gramáticas livre de contexto, análise léxica, análise sintática 1 |
| Prova 2 | 3 | 01/07/2019 | seg | Análise sintática 2, análise semântica, interpretação |
| Trabalhos | 4 | |||
| Exame especial | 15/07/2019 | seg | De acordo com a resolução CEPE 2.880 | |
As atividades deverão ser submetidas através da plataforma Moodle da UFOP: https://www.moodlepresencial.ufop.br/course/view.php?id=24602
Este assunto deve ser muito simples. Não entregue trabalhos de outra pessoa como sendo seus, e não compartilhe suas soluções com outros alunos.
Você deve se sentir livre para discutir os problemas propostos e os projetos de programação com os colegas, mas todo trabalho que você submeter ao professor deve ser de sua própria autoria. Ou seja, você deve elaborar suas próprias soluções para os problemas e implementar seus projetos de programação você mesmo.
Se você discutir suas idéias com outros estudantes, não tem problema, mas faça uma observação sobre o mesmo na submissão do seu trabalho.
As atividades propostas são para trabalho individual.
Nas aulas será utilizada a linguagem OCaml para implementação das técnicas de construção de compiladores. Também serão utilizadas ferramentas auxiliares na implementação das diversas fases da compilação, como geradores de analisadores léxicos (ocamllex), geradores de analisadores sintáticos (menhir), e geradores de código (LLVM).
Os trabalhos práticos poderão ser implementados na linguagem de escolha do aluno, com consulta prévia ao professor.
| # | Data | Assuntos | Atividades |
||
| 01 | 11/03 | Seg | Apresentação da disciplina |
|
|
| 02 | 13/03 | Qua | Compilação e interpretação Introdução |
|
|
| 03 | 18/03 | Seg | Gramáticas Straightline |
|
|
| 04 | 20/03 | Qua | Análise léxica: introdução |
|
|
| 05 | 25/03 | Seg | Análise léxica: ad hoc Exemplo |
|
|
| 06 | 27/03 | Qua | Análise léxica: expressões regulares CS143 Lexical Analysis |
|
|
| 07 | 01/04 | Seg | Análise léxica: autômatos finitos |
|
|
| 08 | 03/04 | Qua | Análise léxica: geradores Aula prática: Análise Léxica |
|
|
| 09 | 08/04 | Seg | Análise léxica: projeto |
|
|
| 10 | 10/04 | Qua | Análise sintática: introdução |
|
|
| 11 | 15/04 | Seg | Análise sintática: análise descendente recursiva |
|
|
| 12 | 17/04 | Qua | (Continuação) |
|
|
| 13 | 22/04 | Seg | Análise sintática: análise ascendente: autômato de pilha |
|
|
| 14 | 24/04 | Qua | Análise sintática: análise ascendente: tabela LR(0) |
|
|
| 15 | 29/04 | Seg | Análise sintática: análise ascendente: tabela SLR |
|
|
| 01/05 | Qua | (Feriado) |
|
||
| 16 | 06/05 | Seg | Análise sintática: análise ascendente: tabela LR(1) |
|
|
| 17 | 08/05 | Qua | Prova 1 |
|
|
| 18 | 13/05 | Seg | Análise sintática: análise ascendente: tabela LALR(1) |
|
|
| 19 | 15/05 | Qua | Análise sintática: análise ascendente: hierarquia de gramáticas |
|
|
| 20 | 20/05 | Seg | Análise sintática: análise ascendente: resolução de conflitos |
|
|
| 21 | 22/05 | Qua | Análise sintática: gerador |
|
|
| 22 | 27/05 | Seg | Análise sintática: projeto |
|
|
| 23 | 29/05 | Qua | Árvores de sintaxe abstrata |
|
|
| 24 | 03/06 | Seg | Análise semântica: introdução |
|
|
| 25 | 05/06 | Qua | Análise semântica: tabelas de símbolo |
|
|
| 26 | 10/06 | Seg | Análise semântica: tipagem |
|
|
| 27 | 12/06 | Qua | Análise semântica: regras de análise semântica |
|
|
| 28 | 17/06 | Seg | Análise semântica: escopo |
|
|
| 29 | 19/06 | Qua | Análise semântica: projeto |
|
|
| 30 | 24/06 | Seg | Geração de código: introdução |
|
|
| 31 | 26/06 | Qua | Geração de código: LLVM |
|
|
| 32 | 01/07 | Seg | Prova 2 |
|
|
| 33 | 03/07 | Qua | (Continuação) |
|
|
| 08/07 | Seg | (Feriado) |
|
||
| 34 | 10/07 | Qua | (Continuação) |
|
|
| 15/07 | Seg | Exame especial |
|
||
| Assunto | Trabalho | Data entrega |
|
|
| Prova | Soluções |
| 2013–2 Prova 1 | |
| 2013–2 Prova 2 | |
| 2013–2 Prova 3 | |
| 2014–1 Prova 1 | |
| 2014–1 Prova 2 | |
| 2017–2 Prova 1 | |
| 2017–2 Prova 2 | |
Resultados de avaliações e frequências
Última atualização: 2019-03-18 16:43:29 por José Romildo Malaquias.