CI211 - Construção de
Compiladores
Primeiro Semestre de 2009
Horário: 3as e 5as, 15h30 PC03
Ementa: Gramáticas. Autômatos. Computabilidade.
Análise léxica. Análise
sintática. Geração de código.
Recuperação de erro. Compiladores de
compiladores.
Programa (2009-1)
- Introdução
- Analisador Léxico
- Introdução ao Analisador
Sintático e ao Semântico
- Geração de Código MEPA
- Expressões, Comandos
Repetitivos, Comandos Iterativos, Procedimentos e Funções.
* Prova 1 *
- Analisador Sintático Descendente Recursivo
(LL(1))
- Analisador Sintático Ascendente (SLR(0),
SLR(1))
* Prova 2 *
Trabalho:
- Construção de um compilador completo
para uma versão simplificada do Pascal (com abordado no livro do
Tomasz).
- Avaliação: Entrevista em
laboratório. Grupos de no máximo dois alunos. O programa
executável gerado pelo compilador do aluno deve funcionar para
todos os exemplos do livro, e para alguns outros que não
estão lá. Será pedida alteração do
código que deverá ser realizada no ato e deve funcionar.
- Nos próximos episódios, falarei
sobre como gerar código executável a partir da MEPA.
Verifique periodicamente neste mesmo canal.
Avaliação:
M1 := Prova1 + Prova2 + Trabalho
------------------------------------------------
3
Se (M1 >= 70 ou M1<40), então
MF:=M1
Senãofg
MF:=(M1+PF)/2
fg
Se MF >=50, aprovado
Senão Reprovado
Datas das Provas: As
datas das provas serão definidas
assim que o assunto para cada prova for terminado. Na aula final do
assunto da prova é que será definida a data. A prova
será marcada para não menos que duas semanas após
esta última aula.
Prova1
(MEPA) :
19/05/2009 (Terça-Feira)
Lista de
Exercícios para a prova: Livro do Tomasz (referência [1]),
- página 135
- exercícios: 1, 11, 12, 13, 14, 17, 18, 19,
21.
Prova2
(Análise Sintática) : 16/06/2009
Lista de
Exercícios: Livro do Tomasz (referência [1]),
-Páginas 49 e 50. Exercícios: 18, 19, 20
-Páginas 69. Exercício: 05
-Outros exercícios: Refazer todos os exemplos contidos dos
capítulos 3 e 4.
Trabalho: Agendar
horário (25/05 até 10/06)
Prova
Final: 07/07/2009 (Terça-feira da semana de provas finais)
Bibliografia:
1.
Implementação de Linguagens de Programação
- Tomasz Kowaltowski - Guanabara Dois
Livro-texto
para grande parte do curso. A diferença entre a abordagem do
livro e a da disciplina é que usaremos direto a última
definição da MEPA (sem extensões).
2. Compilers:
principles, techniques, and tools, Aho, Sethi,
Ullman, Addison-Wesley Longman Publishing Co., Inc. (Tem
verão em português). A "bíblia" sobre o
assuto.
Trata
de tudo que será visto na disciplina, porém com outro
enfoque. Muito útil nas dúvidas sobre o trabalho e como
referência confiável em caso de dúvidas.
Textos Auxiliares:
- Código esquemático
para o if-then/if-then-else em yacc.
MEPA EXECUTAVEL (só funciona em linux).
Arquivos-Fonte e MEPA do livro.