Programa de Ensino 20201
Aprovado pelo Departamento em: 3-8-2020
- Identificação:
- 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
- Curso(s):
- Ciências da Computação (208)
- Requisito(s):
- Ciências da Computação (208)
- INE5421 - Linguagens Formais e Compiladores
- 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.
- 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:
- Compreender os aspectos ligados ao projeto de linguagens de programação
- Descrever a organização arquitetural dos compiladores e e seu funcionamento
- Compreender e implementar os principais algoritmos de análise léxica.
- Compreender e implementar os principais algoritmos de análise sintática
- Compreender e implementar os processos de análise semântica adotados nos compiladores
- Descrever as técnicas de recuperação de erros utilizadas nos compiladores.
- Identificar as formas de geração e de representação de código intermediário
- Compreender as técnicas de otimização de código e geração de código objeto
- Identificar, avaliar e utilizar ferramentas de apoio na constução de compiladores
- 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]
- 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.
- 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