CIC220 — Construção de Compiladores

José Romildo Malaquias
romildo@iceb.ufop.br

2010/1

Sumário

1 Programa da disciplina
 1.1 Dados gerais
 1.2 Ementa
 1.3 Programa analítico das aulas de preleção
 1.4 Bibliografia
 1.5 Objetivos
 1.6 Metodologia de Ensino
 1.7 Atividades Discentes
2 Avaliações
3 Grupo de discussão
4 Ferramentas
5 Roteiros de estudo e aulas práticas
6 Notas e freqüências
7 Alterações

1 Programa da disciplina

1.1 Dados gerais



Departamento:

Computação



Unidade:

Instituto de Ciências Exatas e Biológicas



Carga horária semanal:

4 Teóricas + 2 Práticas = 6 Total



Duração em semanas:

18



Número de créditos:

5



Carga horária semestral:

108



Cursos:

Ciência da Computação (obrigatória: 7o período)



1.2 Ementa

  1. Implementação de linguagens de programação: compiladores e interpretadores
  2. Fases da tradução:
    1. análise léxica
    2. análise sintática
    3. tabelas de símbolos
    4. análise semântica
    5. geração de código intermediário
    6. alocação de memória
    7. geração de código

1.3 Programa analítico das aulas de preleção





unidades e assuntos

número
de
aulas

referências
bibliográficas

número
de
aulas
acumulado





Visão geral do curso. Importância das técnicas de construção de compiladores

02

1, 2

02





Processadores de linguagens: compiladores e interpretadores. Fases da compilação

02

1, 2

04





Análise léxica

12

1, 2

16





Análise sintática

24

1, 2

40





Análise semântica

30

1, 2

70





Geração de código

30

1, 2

100





Avaliações

08

108





1.4 Bibliografia

Referências

[1]   Alfred V Aho, Monica S Lam, Ravi Sethi, and Jeffrey D Ullman. Compiladores: Princípios, Técnicas e Ferramentas. Pearson, segunda edition, 2007.

[2]   Andrew W Appel. Modern Compiler Implementation in Java. Cambridge University Press, 1998.

1.5 Objetivos

Ao final do curso é esperado que o aluno:

1.6 Metodologia de Ensino

1.7 Atividades Discentes

Exercícios para

2 Avaliações




avaliação peso data



Prova 1 2.0 06/04/2010



Prova 2 2.0 18/05/2010



Prova 3 2.0 02/07/2010



Práticas 3.0 entregar relatório 1 semana após a aula prática



Participação no grupo de discussão 1.0



A nota das práticas será dada pela média aritmética das notas das práticas individuais.

A nota final será dada pela média ponderada das atividades avaliativas.

3 Grupo de discussão

Existe um grupo de discussão sobre o conteúdo do curso no Google Groups que deverá ser utilizado ativamente pelos alunos e professor durante o curso. O professor poderá propor questões para discussão no grupo, bem como problemas para serem resolvidos.

Caberá aos alunos discutir as questões e problemas propostos, apontando soluções básicas e/ou soluções alternativas ou comentando o assunto. Os alunos poderão também propor algum problema ou levantar alguma questão para discurtir que julgar interessante.

O grupo estará sendo monitorado pelo professor que analisará a participação de cada aluno nas discussões e atribuirá a ele uma nota de avaliação do seu envolvimento nas discussões.

O endereço do grupo de discussão é http://groups.google.com/group/cic220.

Cada aluno deverá se inscrever imediatamente no grupo e começar a participar das discussões.

4 Ferramentas

Nas aulas será utilizada a linguagem Java para ilustrar as 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 e geradores de analisadores sintáticos.

5 Roteiros de estudo e aulas práticas




Assunto

Prática Data entrega



Representando programas como dados

praticas/pratica.java.01.pdf 30/03/2010



Análise léxica

praticas/pratica.java.02.pdf 06/04/2010



6 Notas e freqüências

Resultados de avaliações e freqüências

7 Alterações

2010 Março 25
2010 Março 22
2010 Março 01