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
• 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
|
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) |