Ministério da Educação
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Campus Cornélio Procópio
PLANO DE ENSINO
CURSO Curso Superior em Engenharia da Computação
MATRIZ
Resolução nº 90/09 aprovada pelo COEPP em 11/09/09
FUNDAMENTAÇÃO LEGAL Resolução nº 162/09 aprovada pelo COEPP em 21/12/09
DISCIPLINA/UNIDADE CURRICULAR
CÓDIGO
PERÍODO
Compiladores
IF66A
6º
CARGA HORÁRIA (horas)
Teórica
Prática
Total
30
30
60
PRÉ-REQUISITO Teoria da Computação
EQUIVALÊNCIA Não há
OBJETIVOS
A disciplina abordará conceitos de linguagens formais, autômatos, gramáticas e técnicas para a construção de compiladores.
Ao final da disciplina o aluno será capaz de descrever os citados acima assim como será capaz de implementar um compilador
utilizando ferramentas de auxílio a construção de compiladores.
EMENTA
Organização e estrutura de compiladores e interpretadores; Análise léxica e sintática; Gramática formal;
Reconhecedores e autômatos; Geração e otimização de código;
Tratamento e recuperação de erros; Ambientes de interpretação e execução.
CONTEÚDO PROGRAMÁTICO
ITEM
1
2
EMENTA
Organização e estrutura de compiladores e
interpretadores
Análise léxica e sintática; Gramática formal;
Reconhecedores e autômatos;
CONTEÚDO
Processo de compilação; Interpretadores e compiladores.
Analisadores léxicos; Analisadores sintáticos. Gramáticas;
Ambiguidade; Gramáticas Livres de Contexto; Regras de produção e
notação BNF;
Código de máquina. Tradução de estruturas de repetição, controle de
fluxo para código de máquina. Verificação de tipos e formas otimização
de código.
Construção de ambientes de interpretação e execução; Implementação
de um compilador.
Geração e otimização de código;
3
4
Ambientes de interpretação e execução.
PROFESSOR
TURMA
Fábio Fernandes da Rocha Vicente
C61
ANO/SEMESTRE
2013-2
AT
36
AP
36
CARGA HORÁRIA (aulas)
APS
4
AD
0
Total
76
AT: Atividades Teóricas, AP: Atividades Práticas, APS: Atividades Práticas Supervisionadas, AD: Atividades a Distância.
DIAS DAS AULAS PRESENCIAIS
Dia da semana
Número de aulas no semestre
Segunda
Terça
Quarta
Quinta
Sexta
Sábado
36
36
0
0
0
Dia/Mês ou
Semana
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
Conteúdo das Aulas
Apresentação da disciplina; Conceitos introdutórios
Caracterização de linguagens de programação
Processo de compilação
Processo de compilação
Implementação pura; Sistemas de implementação híbridos;
Organização es estrutura de compiladores (revisão)
Analisadores léxicos
Analisadores léxicos
Analisadores sintáticos
BNF e regras de produção
BNF e regras de produção
BNF e regras de produção
BNF e regras de produção
BNF e regras de produção
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Avaliação 1
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Construção de um compilador: analisador léxico e sintático (gramática
portugol)
Geração de código: código de máquina (MEPA)
Geração de código: código de máquina (MEPA)
Geração de código: código de máquina (MEPA)
Geração de código: código de máquina (MEPA)
Construção do compilador portugol --> MEPA
Construção do compilador portugol --> MEPA
APS: Compilador Portugol --> MEPA
Construção do compilador portugol --> MEPA (otimização de código)
Construção do compilador portugol --> MEPA (otimização de código)
Ambiente de interpretção e execução
Ambiente de interpretção e execução
Ambiente de interpretção e execução
Prova
Prova
PROCEDIMENTOS DE ENSINO
AULAS TEÓRICAS
Destinadas a apresentação dos conceitos de compiladores
AULAS PRÁTICAS
Número de
Aulas
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Destinadas a implementação de um compilador Portugol para MEPA (Máquina de Execução Pascal). Definição da linguagem:
lexemas, aspectos da linguagem, gramática e geração de código.
ATIVIDADES PRÁTICAS SUPERVISIONADAS
Implementação do compilador utilizando as ferrmentas YACC.
PROCEDIMENTOS DE AVALIAÇÃO
Avaliação através 2 provas escritas e Atividade Prática Supervisionada (APS). A APS cobrirá a implementação de um
compilador de uma linguagem Portugol para uma máquina de poucas instruções chamada MEPA.
Avaliação 1 (A1) - Peso 4: Avaliação do conteúdo apresentado em sala de aula até a data da prova.
Avaliação 2 (A2) - Peso 5: Avaliação do conteúdo apresentado em sala de aula até a data da prova.
Atividade Prática Supervisionada (APS) - Peso 1:
Trabalho contendo um programa executável que compile uma linguagem Portugol definida em sala de aula e gere código para
a máquina MEPA (definida em sala de aula). O trabalho incluirá : (a) definição dos tokens da linguagem, (b) definição da
gramática e das regras de produção, (c) geração de código (deve incluir: implementação de rotinas para manutenção da pilha
semântica e manutenção da tabela de símbolos).
Média final = A1 x 0,4 + A2 x 0,5 + APS x 0,1
REFERÊNCIAS
Referências Básicas:
AHO, Alfred V. et al. Compiladores: princípios, técnicas e ferramentas. 2. ed. São Paulo: Pearson, 2008. 634 p.
LOUDEN, Kenneth C. Compiladores: princípios e práticas. São Paulo: Pioneira, 2004. 569p.
PRICE, Ana Maria de Alencar; TOSCANI, Simão Sirineo. Implementação de linguagens de programação: compiladores. 3.
ed. Porto Alegre: Bookman, 2008.
Referências Complementares:
DELAMARO, Márcio Eduardo. Como construir um compilador utilizando ferramentas Java. São Paulo: Novatec, 2004. 307
p. ISBN 85-7522-055-1.
ORIENTAÇÕES GERAIS
Fábio Fernandes da Rocha Vicente
Professor
Rodrigo Henriques Cunha Palácios
Coordenador do Curso de Engenharia da Computação
Download

IF66A-COMPILADORES-C61-2013.2143 KB 05/06/2014 06:36