Familiarização com os conceitos de linguagens de programação de alto nível e seus processadores. Técnicas de especificação, projeto, simulação, análise e implementação de componentes de compiladores para linguagens de alto nível imperativas.
Conceitos de linguagens de programação e seus processadores. Paradigmas. Componentes, itens léxicos e sintáticos. Semântica. Análise léxica. Meta-linguagens. Especificação formal da sintaxe de linguagens de programação. Análise sintática. Gramáticas e autômatos de pilha estruturados. Obtenção de reconhecedores. Métodos descendentes e ascendentes. Estruturas de controle. Ambientes de execução. Linguagens intermediárias. Código-objeto. Bibliotecas. Análise semântica e geração de código. Estruturas de dados. Tipos de dados. Declarações, manipulação de dados. Seleções, operações, expressões, atribuições, declaração e chamadas de funções e procedimentos. Parâmetros e argumentos. Conceitos de recuperação de erros e de otimização de código. Geração automática de analisadores léxico e sintático. Desenvolvimento de componentes de compiladores para linguagens de alto nível.
1. Conceitos de linguagens de programação e seus processadores. 2. Paradigmas. Componentes, itens léxicos e sintáticos. Semântica. Análise léxica. 3. Meta-linguagens. Especificação formal da sintaxe de linguagens de programação. 4. Análise sintática. Gramáticas e autômatos de pilha estruturados. Obtenção de reconhecedores. Métodos descendentes e ascendentes. Estruturas de controle. 5. Ambientes de execução. Linguagens intermediárias. Código-objeto. Bibliotecas. 6. Análise semântica e geração de código. Estruturas de dados. Tipos de dados. Declarações e manipulação de dados. Seleções, operações, expressões, atribuições, declaração e chamadas de funções e procedimentos. Parâmetros e argumentos. 7. Recuperação de erros. Otimização de código. 8. Geração automática de analisadores léxico e sintático. 9. Tópicos de projeto: Especificação formal de uma linguagem de alto nível. Construção de um analisador léxico para a linguagem especificada. Construção de um reconhecedor sintático para a linguagem especificada. Implementação de rotinas de geração de código. Implementação de ambiente de execução.
1. JOSÉ NETO, J. Introdução à Compilação. Elsevier, 2016. 2. SEBESTA, R. Concepts of Programming Languages. Addison Wesley, 1996. 3. SLONNEGER; KURTZ. Formal Syntax and Semantics of Programming Languages - A Laboratory Based Approach. Addison Wesley, 1995. 4. AHO, A.V.; LAM, M.S.; SEHTI, R.; ULLMAN, J.D. Compilers Principles, Techniques and Tools. Addison Wesley, 2006. 5. TREMBLAY, J.P.; SORENSON, P.G.. The Theory and Practice of Compiler Writing. McGraw-Hill, 1985. 6. HOLUB, A. Compiler Design in C. Prentice Hall, 1997. 7. WIRTH, N. Compiler Construction. Addison Wesley, 1995.