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.
Tópicos teóricos: 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.
Tópicos teóricos: 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.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 e ambiente de execução. Syllabus - PCS2053 Software Quality and Software Project ManagementBasic concepts of software process and software projects. Software life cycle processes. Software project management methodology. Planning and controlling software project processes: scope, time, cost, human resources, communication, risk management and contracting. Effort estimation techniques for software development. Concepts of quality, quality systems and models for quality improvement. Maturity models. Technology demonstration seminars.
João J. Neto. Introdução à Compilação. LTC, 1987.Sebesta. Concepts of Programming Languages. Addison Wesley, 1996.Slonneger & Kurtz. Formal Syntax and Semantics of Programming Languages - A Laboratory Based Approach. Addison Wesley, 1995.Aho, Sehti & Ullman. Compilers Principles, Techniques and Tools. Addison Wesley, 1986.Tremblay & Sorenson. The Theory and Practice of Compiler Writing. McGraw-Hill, 1985.Holub. Compiler Design in C. Prentice Hall, 1990.Wirth. Compiler Construction. Addison Wesley, 1995.