Departamento de Informática e Estatística

Programas de Ensino
Visitante (Entrar)

Programa de Ensino 20201

Aprovado pelo Departamento em: 3-8-2020

  1. Identificação: Visualizar em PDF
    • Disciplina: INE5426 - Construção de Compiladores
    • Carga horária: 72 horas-aula      Teóricas: 20      Práticas: 52
    • Período: 1º semestre de 2020 até a presente data
  2. Curso(s):
    • Ciências da Computação (208)
  3. Requisito(s):
    • Ciências da Computação (208)
      • INE5421 - Linguagens Formais e Compiladores
  4. Ementa:
    • Projeto de especificação de linguagens de programação. Implementação das etapas que compreendem o processo de compilação: Análise Léxica, Análise Sintática, Análise Semântica, Geração e Otimização de Código. Evolução e tendências da área de compiladores e linguagens de programação.
  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 [1 horas-aula]
      • Características principais
    • Especificação e projeto de uma linguagem [6 horas-aula]
    • Análise léxica [2 horas-aula]
    • Construção de um analisador léxico [8 horas-aula]
    • Análise sintática e correção de erros [6 horas-aula]
    • Construção de um analisador sintático [12 horas-aula]
    • Análise semântica [6 horas-aula]
    • Implementação da análise semântica [12 horas-aula]
    • Geração de código intermediário e otimização [6 horas-aula]
    • Implementação do gerador de código [12 horas-aula]
  7. Bibliografia Básica:
    • MOGENSEN, T. AE. Introduction to Compiler Design. Springer, 2011.
    • SU, Y., and YAN, S. Y. Principles of Compilers. Springer, 2011.
    • BORNAT, R. Understanding and Writing Compilers. Springer, 1979.
    • DOS REIS, A. J. Compiler Construction Using Java, JavaCC, and Yacc. Wiley, 2012.
  8. Bibliografia Complementar:
    • 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.
    • 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