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.