Prévia do material em texto
INSTITUTO DE EDUCAÇÃO SUPERIOR DA PARAÍBA – IESP BR 230 - Km 14 Cabedelo – Paraíba – CEP 58.310-000 CNPJ: 70.118.716/0001-73 – Telefone: 83.2106.3800 INSTITUTO DE EDUCAÇÃO SUPERIOR DA PARAÍBA CURSO: SISTEMAS DE INFORMAÇÃO TURNO: NOITE COMPONENTE CURRICULAR: CONSTRUÇÃO DE COMPILADORES PERÍODO: 7º C.H.: 60 h/aula SEMESTRE: 2019.1 PROFESSOR: DANILO RANGEL PLANO DE CURSO 1. EMENTA Conceituação de tradutores: compiladores, interpretadores e montadores; Fases de um compilador; Análise léxica; Análise sintática; Tratamento e recuperação de erros; Geração e Otimização de Código Intermediário; Tabela de símbolos. 2. COMPETÊNCIAS E HABILIDADES A SEREM DESENVOLVIDAS Introduzir os conceitos fundamentais que norteiam a Construção de um Compilador a partir do entendimento de cada uma das suas fases. Ao final da disciplina, o aluno deverá ser capaz de diferenciar cada uma das fases bem como construí-las em uma linguagem de programação. 3. CONTEÚDO PROGRAMÁTICO 1. Introdução à Compilação 2. Análise Léxica – Definição de Tokens e Apresentação da Especificação de um Analisador Léxico, Apresentação e Análise dos Autômatos que compõem as principais partes do Analisador Léxico. 3. Análise Sintática – Autômatos de Pilha, Apresentação de Árvore Sintática e método Bottom-Up 4. Análise Semântica 5. Verificação de Tipos 6. Otimização de Código 4. ATIVIDADE PRORAMADAS Aula expositiva – dialogada Introdução ao processo de compilação TED: Exercício sobre todas as fases relativas ao processo de compilação (simplificado). Análise Léxica – Revisão dos Principais Conceitos de Linguagens Formais e suas aplicações na análise léxica. TED: Exercício sobre os conceitos de Gramática e Expressão Regular. Análise Léxica – Autômatos finitos. TED: Exercícios sobre os vários tipos de autômatos finitos. Análise Léxica – Definição de Tokens e Apresentação da Especificação de um Analisador Léxico TED: Realizar a construção de uma tabela de símbolos de uma linguagem fictícia. Análise Sintática – Revisão dos conceitos necessários de Linguagens Formais TED: Construção de uma Gramática Livre de Contexto para uma determinada linguagem Análise Sintática – Autômatos de Pilha TED: Construção de Autômatos de Pilha Análise Sintática – Apresentação de Árvore Sintática e método bottom-up TED: Construção de uma Árvore Sintática Simples Revisão para a primeira avaliação TED: Lista de Exercício com questões sobre o conteúdo da prova. Análise Semântica – Introdução e conceitos TED: Exercício de identificação das fases da análise semântica Análise Semântica - Verificação de Tipos TED: Exercício para identificar tipos das variáveis de uma linguagem de programação Análise Semântica - Otimização de Código TED: Aplicação do método para um dado código Definição e escopo do projeto de um compilador simples. TED: Codificação do analisador léxico. Continuação do projeto – Definição do analisador sintático. TED: Codificação do analisador sintático. Continuação do projeto – Definição do analisador semântico. TED: Codificação do analisador semântico. 1ª avaliação, 2ª avaliação, Reposição e Prova Final INSTITUTO DE EDUCAÇÃO SUPERIOR DA PARAÍBA – IESP BR 230 - Km 14 Cabedelo – Paraíba – CEP 58.310-000 CNPJ: 70.118.716/0001-73 – Telefone: 83.2106.3800 5. AVALIAÇÃO Prova de múltipla escolha com questões subjetivas e objetivas. Exercícios para acompanhamento do aprendizado e um projeto de compilador simples. 6. BIBLIOGRAFIA BÁSICA SANTOS, Pedro Reis, LANGLOIS, Thibault. Compiladores - Da Teoria à Prática. Rio de Janeiro: LTC, 04/2018 AHO, Alfred V. Compiladores: princípios, técnicas e ferramentas. Massachusetts, EUA: JC, 1995. Menezes, Paulo B. Linguagens Formais e Autômatos - V3 - UFRGS. Porto Alegre: Bookman, 04/2011. 7. BIBLIOGRAFIA COMPLEMENTAR PRICE, Ana Maria de Alencar. Implementação de linguagens de programação: compiladores. 3. ed. Porto Alegre, RS: Sagra Luzzatto, 2005. APPEL, Andrew W.; ALSBERG, Jens. Modern compiler implementation in java. 2. ed. Cambridge: Cambridge University, 2002. MUCHNICK, Steven S. Advanced compiler design and implementation. San Francisco: MK, 1997. LOUDEN, Kenneth C. et al. Compiladores: princípios e práticas. São Paulo, SP: Pioneira Thomson Learning, 2004. DELAMARO, Márcio Eduardo; ZAGNI, Patrizia ; PRATES, Rubens . Como construir um compilador utilizando ferramentas java. São Paulo, SP: Novatec, 2004.