Nome da Atividade
PROJETO DE COMPILADORES
CÓDIGO
22000303
Carga Horária
60 horas
Tipo de Atividade
DISCIPLINA
Periodicidade
Semestral
Unidade responsável
CRÉDITOS
4
CARGA HORÁRIA TEÓRICA
3
CARGA HORÁRIA PRÁTICA
1
CARGA HORÁRIA OBRIGATÓRIA
4
FREQUÊNCIA APROVAÇÃO
75%

Ementa

Estrutura de um compilador/interpretador: módulos componentes, interfaces, análise léxica, análise sintática, análise semântica e geração de código. Ambientes de execução.

Objetivos

Objetivo Geral:

Esta disciplina tem o objetivo de propiciar ao aluno a oportunidade de aprender e compreender os vários aspectos relacionados ao projeto de compiladores de linguagens. O aluno deverá aprender as principais técnicas e algoritmos usados na implementação de compiladores e ferramentas relacionadas, e.g., interpretadores, formatadores de textos, etc. Na construção destes conhecimentos são largamente usados os conceitos relacionados às linguagens de programação e às linguagens formais, particularmente a construção e a transformação de gramáticas, bem como as definições de sintaxe, semântica e ambiente de execução. A disciplina prevê a implementação de parte de um compilador simples, com o objetivo de consolidar os conceitos apresentados.

Conteúdo Programático

1. Modelo de um Compilador
• Análise léxica
• Análise sintática
• Análise semântica
• Gerador de código intermediário
• Otimizador de código
• Gerador de código objeto
2. Análise Léxica.
• Autômatos finitos e análise léxica
• Uso do LEX
3. Análise Sintática.
• Árvore sintática
• Análise top-down e bottom-up
• Analisador descendente recursivo
• Analisadores preditivos
• Transformações de gramáticas
• Analisador shift-reduce
• Gramáticas de operadores
• Precedência de operadores
• Parser preditivo não-recursivo
• Analisadores LR
• Uso do YACC/Javacc
4. Análise Semântica.
5. Tradução Dirigida por sintaxe
6. Geração de Código Intermediário.
7. Otimização de Código.
8. Geração de Código Objeto
9. Ambientes de execução

Bibliografia

Bibliografia Básica:

  • PRICE, A. M. & TOSCANI, S. S. Implementação de Linguagens de Programação: Compiladores. Porto Alegre: Sagra Luzzatto, 2001.
  • AHO, Alfred V. ULLMAN, Jeffrey D. SETHI, Ravi, Compiladores: Principios, Técnicas E Ferramentas.Editora: LTC, 1995.
  • LOUDEN, C. KENNETH. Compiladores, princípios e práticas. Thompson, 2004.

Bibliografia Complementar:

  • GRUNE, DICK et al. Modern Compiler Design. Wiley, 2000.
  • APPEL, Andrew. Modern Compiler Implementation in C. Cambridge University Press, 1998.
  • AHO, Alfred, LAM, Monica, SETHI, Ravi, ULLMAN, Jeffrey D. Compilado- res: Principios, Técnicas E Ferramentas. Segunda Edição. LONGMAN DO BRASIL, 2007
  • HOPCROFT, John, ULLMAN, Jeffrey, MOTWANI, Rajeev. Introdução à teoria de automatos, linguagens e computação. Editora Elsevier, 2002.
  • MENEZES, Paulo F. B. Linguagens formais e automatos. Editora Sagra Luzzatto, 1997.
  • ALLEN, Randy, KENNEDY, Ken. Optimizing Compilers for Modern Architectures: A Dependence-based Approach. Morgan Kaufmann, 2001.
  • PATTERSON, David A., HENESSY, John L. Organização e Projeto de Computadores: a interface hardware/software. 2a.ed. Rio de Janeiro: LTC, 2000

Turmas Ofertadas

Turma Período Vagas Matriculados Curso / Horários Professores
M1 2024 / 2 35 30 Ciência da Computação (Bacharelado)
Engenharia de Computação (Bacharelado)
Horários
ManhãTardeNoite
SEG13:30 - 14:20
14:20 - 15:10
QUI13:30 - 14:20
14:20 - 15:10
ANDRE RAUBER DU BOIS
Professor responsável pela turma

Disciplinas Equivalentes

Disciplina Curso
COMPILADORES I Ciência da Computação (Bacharelado)
COMPILADORES I Engenharia de Computação (Bacharelado)

Página gerada em 22/11/2024 00:28:40 (consulta levou 0,129385s)