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.
3. Cursos Relacionados
CIÊNCIAS DA COMPUTAÇÃO (208) - Currículo: 2007-1 (Obrigatória)
4. Objetivos
4.1 Objetivo 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
4.2 Objetivos 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
5. 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]
6. 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.
7. 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