Programa de Ensino 20091
Aprovado pelo Departamento em: 1-4-2009
- Identificação:
- 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
- Curso(s):
- Ciências da Computação (208)
- Requisito(s):
- Ciências da Computação (208)
- INE5317 - Linguagens Formais e Compiladores
- 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.
- 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 [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]
- 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.
- 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