BCC328
Construção de Compiladores I

José Romildo Malaquias
Sala 21 – DECOM – ICEB III
Instituto de Ciências Exatas e Biológicas
Universidade Federal de Ouro Preto
malaquias@ufop.edu.br

2019/1

Sumário

1 Dados gerais
2 Ementa
3 Bibliografia
4 Objetivos
5 Metodologia de Ensino
6 Atividades Discentes
7 Avaliações
8 Código de honra do aluno
9 Ferramentas
10 Aulas
11 Trabalhos
12 Avaliações de semestres anteriores
13 Notas e frequências

1 Dados gerais



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


2 Ementa

  1. Implementação de linguagens de programação: compilação e interpretação
  2. Análise léxica
  3. Análise sintática
  4. Análise semântica

3 Bibliografia

[1]

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

[2]

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

[3]

PIC
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.

[4]

PIC
Compiler Design: Syntactic and Semantic Analysis. Inglês. Springer, 2013. isbn: 978-3642175398.

4 Objetivos

Ao final do curso é esperado que o aluno:

5 Metodologia de Ensino

6 Atividades Discentes

7 Avaliações

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

8 Código de honra do aluno

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.

9 Ferramentas

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.

10 Aulas







#
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







11 Trabalhos




Assunto

Trabalho

Data entrega



12 Avaliações de semestres anteriores



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


13 Notas e frequências

Resultados de avaliações e frequências

Última atualização: 2019-03-18 16:43:29 por José Romildo Malaquias.