Departamento de Informática e Estatística

Programas de Ensino
Visitante (Entrar)

Programa de Ensino 20091

Aprovado pelo Departamento em: 1-4-2009

  1. Identificação: Visualizar em PDF
    • Disciplina: INE5318 - Construção de Compiladores
    • Carga horária: 54 horas-aula      Teóricas: 20      Práticas: 34
    • Período: 1º semestre de 2009 até a presente data
  2. Curso(s):
    • Ciências da Computação (208)
  3. Requisito(s):
    • Ciências da Computação (208)
      • INE5317 - Linguagens Formais e Compiladores
  4. Ementa:
    • Projeto de linguagens. Organização e estrutura de compiladores. Análise léxica e sintática. Recuperação de erros. Alocação e gerência de memória. Formas de representação interna. Análise semântica. Geração e otimização de código. Projeto e implementação de um compilador. Tópicos especiais.
  5. Objetivo(s):
    • Geral: Dotar o aluno de conhecimento básico dos conceitos e técnicas necessários para a construção de compiladores, bem como para a compreensão dos conhecimentos envolvidos no projeto de linguagens de programação e o tratamento computacional de linguagens em geral
    • Específicos:
      1. Compreender os aspectos ligados ao projeto de linguagens de programação
      2. Descrever a organização arquitetural dos compiladores e e seu funcionamento
      3. Compreender e implementar os principais algoritmos de análise léxica.
      4. Compreender e implementar os principais algoritmos de análise sintática
      5. Compreender e implementar os processos de análise semântica adotados nos compiladores
      6. Descrever as técnicas de recuperação de erros utilizadas nos compiladores.
      7. Identificar as formas de geração e de representação de código intermediário
      8. Compreender as técnicas de otimização de código e geração de código objeto
      9. Identificar, avaliar e utilizar ferramentas de apoio na constução de compiladores
  6. Conteúdo Programático:
    • A estrutura de um compilador [1 hora-aula]
    • Linguagens de programação [2 horas-aula]
      • Características principais
    • Especificação e projeto de uma linguagem [6 horas-aula]
    • Análise léxica [3 horas-aula]
    • Construção de um analisador léxico [6 horas-aula]
    • Análise sintática e correção de erros [3 horas-aula]
    • Construção de um analisador sintático [9 horas-aula]
    • Análise semântica [3 horas-aula]
    • Implementação da análise semântica [9 horas-aula]
    • Geração de código intermediário e otimização [3 horas-aula]
    • Implementação do gerador de código [9 horas-aula]
  7. Bibliografia Básica:
    • AHO, A.V.; LAM, M. S.; SETHI, R. ULLMAN, J.D. Compiladores – Princípios, Técnicas e Ferramentas, Pearson, 2008
    • DELAMARO, Márcio Eduardo. Como Construir um acompilador. São Pauo, Novatec, 2004.
    • PRICE, Ana Maria de Alencar, TOSCANI, Simão Sirineo. Implementação de Linguagens de Programação: Compiladores. Porto Alegre, Sagra, 2004.
  8. Bibliografia Complementar:
    • HOPCROFT, J. E., ULLMAM, J. D. Formal Languagens and Their Relations to Automata. Addison-Wesley, 1969..
    • HOPCROFT, J. F., ULLMAN, J. D.. Introduction to Automata Theory, Languagens and Computation. Ed. Addison-Wesley, 1979
    • MENESES, P. B. Linguagens Formais e Autômatos, Ed. Sagra Luzzato, 2. edição, 1998.
    • AHO, A. V., ULLMAN, J. D. The Theory of Parsing, Translation, and Compiling. Volume I: Parsing. Ed Prentice-Hall, Inc. 1972, 542p