DEPARTAMENTO DE ENGENHARIAS E CIÊNCIA DA COMPUTAÇÃO Disciplina: Compiladores Código: 30-480 Carga Horária: 80h (60h Teórica + 20h Prática) Nº de Créditos: 04
EMENTA Definição e estrutura de Compiladores e Interpretadores. Analisadores (léxico /sintático /semântico). Geração e otimização de código.
OBJETIVOS Compreender a estrutura de compiladores, o processo de compilação no reconhecimento de linguagens e a geração/otimização de código. Capacitar o aluno para construir analisadores sintáticos baseados em autômatos de pilha.
CONTEÚDOS CURRICULARES Definição e Estrutura de Compiladores Processos de Compilação Interpretação Estrutura Geral de um Compilador Analisador Léxico Analisador Sintático Analisador Semântico Gerador de Código Intermediário Tabela de Símbolos Otimização de Código Gerador de Código Intermediário Montador Análise Sintática Top-Down Análise Sintática de Descendência Recursiva Análise Sintática Não-Recursiva Preditiva Análise Preditiva Tabular Bottom-Up Análise Sintática de Precedência de Operadores Análise Shift-Reduce através de Pilhas Conjunto First Conjunto Follow Tabela de Parsing Máquina de Turing Tratamento de Erros de Sintaxe Estratégias para Recuperação de Erros Análise Semântica Conceitos e Definições
METODOLOGIA Os alunos desenvolverão Trabalhos Discente Efetivos (TDE) no total de 20h, de acordo com o planejamento do professor: estudos de caso, pesquisas bibliográficas, resolução de problemas e lista de exercícios. O desenvolvimento dos conteúdos será feito através de aulas expositivas no quadro, acompanhada da apostila da disciplina para a discussão dos itens de cunho teórico. A seguir, dar-se-á a realização de exercícios práticos para fixação do conteúdo estudado. A resolução de exercícios será seguida da correção dos mesmos pelo professor, com a participação dos alunos, a fim de demonstrar e fixar os conceitos estudados. No decorrer do semestre, serão utilizadas metodologias ativas com o objetivo de potencializar o processo de ensino-aprendizagem.
AVALIAÇÃO Para esta disciplina a avaliação semestral deve considerar a média ponderada entre as notas, que serão definidas através das seguintes avaliações: Parte da avaliação da disciplina, com peso 20%, será referente às atividades desenvolvidas nas TDEs, conforme previsto pelas regras da graduação Ativa da URI; O restante das notas consistirá em provas e trabalhos (teóricos e/ou práticos), com assuntos específicos da disciplina. A atribuição de notas para a avaliação do desempenho do acadêmico, segue o prescreve o Regimento Geral da Universidade, Art. 88 a 92.
|
BIBLIOGRAFIA BÁSICA AHO, Alfred V.; LAM, Monica S.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores: princípios, técnicas e ferramentas. 2. ed. São Paulo: Pearson Addison-Wesley, 2008. HOPCROFT, J.; ULLMAN, J. MOTWANI, R. Introdução à Teoria de Autômatos, Linguagens e Computação. Edição Traduzida. São Paulo: Campus. 2002 PRICE, A. M. de A.; TOSCANI S. S. Implementação de Linguagens de Programação: Compiladores. Rio de Janeiro: Sagra Luzzato, 2005.
BIBLIOGRAFIA COMPLEMENTAR DELAMARO, Márcio Eduardo. Como construir um compilador utilizando ferramentas Java. São Paulo: Novatec, 2004. GRUNE, Dick et al. Projeto moderno de compiladores: implementação e aplicações. Rio de Janeiro: Campus, 2001. LOUDEN, Kenneth C. Compiladores: princípios e prática. São Paulo: Pioneira Thomson Learning, 2004. Menezes, P. B. Blauth. Linguagens Formais e Autômatos, 6. ed. Bookman, 2011. (Biblioteca Virtual). Midena, RAMOS, Marcus Vinícius, JOSÉ NETO, João, and VEJA, Ítalo Santiago. Linguagens Formais: Teoria, Modelagem e Implementação. Porto Alegre: Bookman, 2011. (Biblioteca Virtual). |