Aula 0 (01/08/2014) - Orientações e Plano de Ensino
Download
Report
Transcript Aula 0 (01/08/2014) - Orientações e Plano de Ensino
Compiladores
Prof. Guilherme Alexandre Monteiro Reinaldo
Recife
‹#›
Apresentação do Professor
Graduado em Ciência da Computação – UFPE, 2005.2
Mestre em Ciência da Computação – UFPE, 2009
Servidor Público – ATI (Agência de Tecnologia da Informação)
Experiência como Professor em outras instituições:
• FAFICA (Faculdade de Filosofia, Ciências e Letras de Caruaru)
• Pós-Graduação – FG, FAFIRE, ESTÁCIO, FMR
• Núcleo de EAD – UFRPE (Licenciatura em Computação)
• CEFOSPE (Centro de Formação de Servidores do Estado)
Cordelista (Escritor e Declamador de Cordel)
Contatos
Prof. Guilherme Alexandre Monteiro Reinaldo
Apelido: Alexandre Cordel
E-mail/gtalk: [email protected]
[email protected]
Site: http://www.alexandrecordel.com.br/fbv
Celular: (81) 9801-1878
Roteiro
Acordo de Convivência
Plano de Ensino
• Competência
• Habilidades
• Bases Tecnológicas
• Metodologia de Ensino e Aprendizagem
• Metodologia de Avaliação
• Bibliografia
Compiladores
Acordo de Convivência
Celular no silencioso e sair para atender
Horário: 19:00h às 22:00h (±10min de tolerância)
Presença/participação em aulas (valerão nota)
Haverá exercícios/projetos valendo nota
Faltas em aulas (não justificadas)
Intervalo (~20:30h)
Provas (subjetivas)
Momentos Relax (descontração)
Plano de Ensino
EMENTA:
• Conceitos básicos sobre compiladores e interpretadores.
• Arquitetura básica de um compilador.
• Análise léxica.
• Expressões regulares.
• Tabela de símbolos.
• Análise sintática.
• Grafo sintático.
• Implementação de um analisador sintático.
Representação intermediária.
• Análise e semântica. Geração de código. Otimização de
código.
Plano de Ensino
OBJETIVOS:
• Conhecer os diferentes tipos de tradutores de linguagens;
• Conhecer a estrutura de um tradutor - compilador;
• Compreender o funcionamento de um Analisador Léxico;
• Saber especificar, formalizar e implementar Analisadores Léxicos;
• Compreender o funcionamento de diferentes técnicas de análise
sintática;
• Saber especificar, formalizar e implementar Analisadores Sintáticos.
• Conhecer os métodos de tradução dirigida por sintaxe;
• Conhecer aspectos teóricos da geração de código intermediário,
otimização e geração de código;
• Implementar um tradutor simples de linguagens, desde a sua
especificação até codificação.
Plano de Ensino
OBJETIVOS:
•Ao final do semestre o aluno será capaz de
construir tradutores de linguagens de
programação, a partir da base teórica na
disciplina de linguagens formais e autômatos e
dos conhecimentos desta disciplina.
•Como forma de possibilitar uma maior
compreensão desses conceitos e do processo de
construção de um tradutor, os alunos devem
construir um tradutor simples em conjunto com
outros alunos.
Plano de Ensino
CONTEÚDO:
1.Entrega do plano de aula e Apresentação dos objetivos da
disciplina.
2.Introdução: Processadores de linguagem, Estrutura de um
compilador, Evolução das linguagens.
3.Análise léxica: Introdução, Tokens, Expressões regulares,
Implementação, Tabela de símbolos.
4.Análise léxica: Projeto de um analisador léxico.
5.Análise sintática: Gramáticas livres de contexto, Análise
sintática descendente.
6.Análise sintática: Análise ascendente.
Plano de Ensino
CONTEÚDO:
7.Análise sintática: Análise LR.
8.Análise sintática: Projeto de um analisador sintático.
9.Análise semântica: Esquemas de tradução dirigida por sintaxe, Árvores de
sintaxe.
10.Geração de código: Linguagens Intermediárias, Geração de código para
declarações, expressões e atribuições.
11.Geração de código: Geração de código para expressões lógicas, comandos
condicionais e iterativos.
12.Otimização de Código, Dificuldades com Otimização.
13.Acompanhamento do desenvolvimento dos projetos.
14.Apresentação de projetos.
Plano de Ensino
METODOLOGIA DE ENSINO APRENDIZAGEM:
Como estratégias de ensino e aprendizagem, estão previstas
as seguintes:
•Aulas expositivas/dialogadas;
•Exercícios e Projetos;
•Trabalho em grupo;
Plano de Ensino
METODOLOGIA DE AVALIAÇÃO:
Como estratégias de avaliação do processo de
ensino/aprendizagem, estão previstas as seguintes:
•Prova escrita;
•Trabalhos/Projetos em grupo;
•Exercícios;
•Verificação da assiduidade e participação em
aula.
Plano de Ensino
BIBLIOGRAFIA BÁSICA:
1. AHO, A., LAM, M. S., SETHI, R., ULLMAN, J. D., Compiladores:
princípios, técnicas e ferramentas. Ed. Addison Wesley. 2a
Edição, 2008.
2. PRICE, A., TOSCANI, S., Implementação de Linguagens de
Programação: Compiladores. Série Livros Didáticos UFRGS,
Bookman, 3a Edição, 2008.
3. MKENNETH C. LOUDEN, Compiladores: Princípios e Práticas.
Ed. Cengage Learning, 1a Edição, 2004.
Plano de Ensino
BIBLIOGRAFIA COMPLEMENTAR:
1. APPEL, A. W., PALSBERG, J., Modern Compiler Implementation
in Java, Cambridge University Press, 2a Edição, 2002.
2. WATT, D., BROWN, D., Programming Language Processors in
Java, Prentice Hall, 2000.
3. LEWIS, H. R., PAPADIMITRIOU, C. H., Elementos de Teoria da
Computação. 2a Edição. Ed. Bookman, 2004.
4. TENEMBAUM, A. M., Estrutura de Dados Usando C. Makron Books
do Brasil, 1995.
5. DEITEL, H.M., DEITEL, P.J., Java Como Programar, Editora
Bookman, 2005
Compiladores
O que é um COMPILADOR?
Um compilador é um programa de computador (ou um grupo de
programas) que, a partir de um código fonte escrito em uma
linguagem compilada, cria um programa semanticamente
equivalente, porém escrito em outra linguagem, código objeto.
ALTO NÍVEL
TRADUTOR
BAIXO NÍVEL
MENSAGENS
DE ERRO
Referências
AHO, A., LAM, M. S., SETHI, R., ULLMAN, J. D.,
Compiladores: princípios, técnicas e ferramentas. Ed.
Addison Wesley. 2a Edição, 2008.