pontifícia universidade católica de goiás - SOL

Propaganda
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS
PRÓ-REITORIA DE GRADUAÇÃO
DEPARTAMENTO DE COMPUTAÇÃO
PLANO DE ENSINO
Disciplina: Compiladores
Curso: Engenharia de Computação/ Ciência da computação
Professor/Responsável: Carmen Cecília Centeno
Código
Nº de Créditos
CMP1220
06
Pré-requisitos:
Có-requesito
Estudo dos métodos para resolução de problemas e modelagem da solução por meio de algoritmo.
Estruturação, depuração, testes e documentação.
•
•
•
•
Ensinar ao aluno a entender o processo de tradução e compilação das linguagens de alto nível de
abstração para linguagens de baixo nível de abstração.
Ensinar ao aluno as técnicas/ferramentas utilizadas para construção de um compilador, com senso
crítico das vantagens e desvantagens de cada abordagem.
Possibilitar ao aluno compreender a ligação do processo de compilação com as disciplinas
correlatas.
•
Capacitar o aluno a implementar analisadores de expressão para uma ampla utilização nos
problemas da Computação.
Capacitar o aluno a implementar o protótipo de um tradutor e sua efetiva interpretação dos
comandos de alto nível, a fim de criar suas própria linguagem ou complementar a funcionalidade
de um software já existente.
•
•
•
•
•
•
•
•
•
Introdução
Análise Léxica
Tabelas de Símbolos
Análise Sintática
Tradução dirigida pela sintaxe (esquemas de tradução)
Verificação de tipos
Ambientes em tempo de execução
Geração de código intermediário
Otimização de código
•
•
•
•
Aulas expositivas;
Formação de grupos para definição, discussão e solução de problemas;
Estudo dirigido- resolução de exercícios em classe.
Construção passo a passo do compilador em módulos que evoluem deste a revisão dos
fundamentos de programação na linguagem C até a construção de uma linguagem de
programação (interpretador) que implementa a tradução de um português estruturado.
A nota final, NF, da disciplina será resultante da média ponderada de dois conjuntos de notas,
N1 e N2, conforme a expressão NF = 0,4.N1+ 0,6.N2, sendo que tanto N1 quanto N2 serão compostos
por no mínimo duas notas resultantes de duas avaliações individuais com todo o conteúdo do período
correspondente.
A frequência será computada em cada encontro ou através de chamada feita durante as aulas.
Será considerado aprovado na disciplina o aluno que obtiver a freqüência mínima de 75% e
Nota Final igual ou superior a cinco.
AED 1, 2: Revisão LFA
AED 3 – 6: Implementação de um analisador léxico da gramática proposta em sala de aula.
AED 7 - 10: Implementação de um analisador sintático da gramática proposta em sala de aula.
AED 11,12: Implementação dos procedimentos de erro para a gramática proposta em sala de aula.
1. PRICE, Ana Maria de Alencar; TOSCANI, Simão Sirineo. Implementação de linguagens de
programação: compiladores. 3. ed. Porto Alegre: Bookman, 2008.
2. AHO, Alfred V.; SETHI, Ravi; ULLMAN, Jeffrey D. Compilers: principles, techinques, and tools.
New York: Addison-Wesley, 1988.
3. LOUDEN, Kenneth C. Compiladores. São Paulo: Thomson Learning, 2004.
1. AHO, Alfred V. Compiladores: princípios, técnicas e ferramentas. 2. ed. São Paulo: Pearson Addison
Wesley, 2008. 634 p.
2. APPEL, Andrew W.; GINSBURG, Maia. Modern compiler implementation in C. Cambridge:
Cambridge University, c1998. 544 p.
3. KERNIGHAN, Brian W.; RITCHIE, Dennis M. C A linguagem de programação ANSI. Rio de
Janeiro: Campus, 1990.
4. KOWALTOWSKY, Thomaz. Implementação de linguagens de programação. Rio de Janeiro:
Guanabara Dois, 1983.
5. SCHILDT, Herbert. C completo e total. 4. ed., New York: McGraw Hill, 2000.
1. Apresentação do professor, do Plano de Ensino e Motivação (06/02)
2. Introdução a Compiladores. Tradução x Interpretação (programa fonte, programa alvo).
Processo de Compilação (tipos de análise). (07/02)
3. As fases de um compilador. Gramáticas e Linguagens (ênfase em Regular). (10/02)
4. Análise Léxica. Autômatos Finitos Deterministicos e Não Deterministicos. Minimização do
AFD. (13/02)
5. Definição de Tokens, Padrões e Lexemas. Representação e Categoria de Tokens. Convertendo
um AFND em um AFD. Expressões Regulares. (20/02)
6. Tabela de Símbolos. Tabela Hash.Convertendo ER em AFND. (21/02)
7. Especificação de um Analisador Léxico. Convertendo um AFD em Programa. Definição do
alfabeto e formação de tokens para a implementação de um analisador léxico. (24/02)
8. Análise sintática (introdução) Gramáticas Livres de Contexto. Derivações e Árvores de
Derivações. Exercícios. (27/02)
9. Transformações em GLC’s (28/02)
10. Autômatos de Pilha. (03/03)
11. Revisão para Prova (06/03)
12. Prova 1 (07/03)
13. Entrega e Correção da Prova 1 (10/03)
14. Análise Sintática Top Down Recursiva com Retrocesso. Definição da gramática a ser
implementada. (13/03)
15. Análise Sintática Top Down Recursiva Preditiva. Analise Preditiva Tabular (14/03)
16. Construção da tabela preditiva. Exercícios.(17/03)
17. Gramáticas LL(1). Correção Exercícios. (20/03)
18. Lista de Exercícios sobre Análise Sintática Preditiva Tabular (21/03)
19. Análise Sintática Bottom-Up.Gramática de Operadores. Exercícios (24/03)
20. Análise Sintática por Precedência de Operadores. Construção da Tabela de Precedência de
Operadores (Método Intuitivo). (27/03)
21. Lista de Exercícios. (28/03)
22. Construção da Tabela de Precedência de Operadores (Método Mecânico). Exercícios. (31/03)
23. Lista de Exercícios de Revisão para Prova(07/04)
24. Correção da Lista de Revisão (10/04)
25. Prova 2 (11/04)
26. Entrega e Correção da Prova 2 (14/04)
27. Analisadores LR (17/04)
28. Analisadores SLR (18/04)
29. Lista de Exercícios SLR (24/04)
30. Correção da Lista de Exercícios SLR. (25/04)
31. Analisadores LR Canônicos (28/04)
32. Lista de Exercícios LR Canônica. (05/05)
33. Correção Lista LR Canônica. (08/05)
34. Tabela Sintáticas LALR (09/05)
35. Exercícios - Tabela Sintáticas LALR (12/05)
36. Correção Exercícios. (15/05)
37. Lista de Exercícios de Analise Sintática (16/05)
38. Correção da Lista de Exercícios.(19/05)
39. Revisão para a Prova 3 (22/05)
40. Prova 3 (23/05)
41. Entrega e correção da Prova 3 (26/05)
42. Recuperação de erros na análise LL - modo pânico. (29/05)
43. Recuperação de erros na análise LL - recuperação local. Precedência de Operadores (30/05)
44. Recuperação de Erros na Análise LR, modo pânico e recuperação local (02/06)
45. Lista de Exercícios (09/06)
46. Tradução Dirigida Pela Sintaxe. Esquemas de Tradução: Agregando regras semânticas a uma
GLC. Árvores Gramaticais Anotadas. Verificações Semânticas através de ações semânticas.
(12/06)
47. Tradução Dirigida Pela Sintaxe. Grafo de Dependência, árvores de sintaxe. Implementação de
Esquemas. (13/06)
48. Lista de Exercícios de Revisão. (16/06)
49. Prova 4 (19/06)
50. Correção Prova 4 (20/06)
50. Entrega de Notas e Discussão de Resultados (23/06)
51. Entrega de Notas e Discussão de Resultados (26/06)
52. Entrega de Notas e Discussão de Resultados (27/06)
53.
54.
Quadro Branco com pincéis, Laboratório de Computadores com acesso à Internet, IDE de
desenvolvimento para a linguagem C.
Download