Você está na página 1de 4

PLANO DE ENSINO - COMPILADORES

CARGA HORÁRIA: 80 HORAS

EMENTA

Compiladores e Interpretadores. Análise Léxica e Sintática. Tabela de símbolos. Esquema de


Tradução. Ambientes de Tempo de Execução.
Representação Intermediária. Análise Semântica. Geração de Código. Otimização de Código.
Bibliotecas e compilação em Separado.

OBJETIVOS
Apresentar as principais etapas envolvidas no processo de compilação; Conhecer as fases de
projeto de um compilador; Estudar a análise léxica do código-fonte; Estudar a análise sintática;
Estudar as principais características da análise semântica, geração e otimização de código.
COMPETÊNCIAS E HABILIDADES

1 - Identificar problemas que tenham solução algorítmica.


2 - Conhecer os limites da computação.
3 - Resolver problemas usando ambientes de programação.
4 - Compreender e explicar as dimensões quantitativas de um problema.
5 - Gerir a sua própria aprendizagem e desenvolvimento, incluindo a gestão de tempo e
competências organizacionais.
6 - Preparar e apresentar seus trabalhos e problemas técnicos e suas soluções para audiências
diversas, em formatos apropriados (oral e escrito).
7 - Ser capaz de realizar trabalho cooperativo e entender a força que dele pode ser derivada.
8 - Compreender os fatos essenciais, os conceitos, os princípios e as teorias relacionadas à Ciência
da Computação para o desenvolvimento de software e hardware e suas aplicações.
9 - Reconhecer a importância do pensamento computacional no cotidiano e sua aplicação em
circunstâncias apropriadas e em domínios diversos.
10 - Especificar, projetar, implementar, manter e avaliar sistemas de computação, empregando
teorias, práticas e ferramentas adequadas.
11 - Aplicar temas e princípios recorrentes, como abstração, complexidade, princípio de localidade
de referência (caching), compartilhamento de recursos, segurança, concorrência, evolução de
sistemas, entre outros, e reconhecer que esses temas e princípios são fundamentais à área de
Ciência da Computação.
CONTEÚDO PROGRAMÁTICO
1. LINGUAGENS FORMAIS;
1.1. Alfabeto, cadeias e linguagens;
1.2. Expressões Regulares;
1.3. Autômatos Finitos;
1.4. Gramáticas;
1.5. Linguagens Regulares e Gramáticas Regulares;
1.6. Linguagens e Gramáticas Livres de Contexto;
1.7. Autômatos de Pilha.
2. INTRODUÇÃO À TEORIA DE COMPILADORES;
2.1. Compiladores;
2.2. Análise do programa-fonte;
2.3. Fases de um compilador;
2.4. Análise;
2.5. Tabela de símbolos;
2.6. Recuperação de Erros;
2.7. Síntese.
3. ANÁLISE LÉXICA;
3.1. O analisador léxico;
3.2. Especificação dos Tokens;
3.3. Reconhecimento de Tokens;
4. ANÁLISE SINTÁTICA;
4.1. O analisador sintático;
4.2. GLC e análise sintática;
4.3. Análise sintática top-down;

4.4. Análise sintática bottom-up;

4.5. Análise sintática de precedência de operadores;


4.6. Analisadores Sintáticos LR;
5. ANÁLISE SEMÂNTICA;
5.1. Tradução dirigida pela sintaxe;
5.2. Construção de árvores sintáticas;
6. CONCEITOS BÁSICOS SOBRE GERAÇÃO DE CÓDIGO INTERMEDIÁRIO;
6.1. Linguagens intermediárias;
6.2. Declarações;
6.3. Enunciados de atribuição;
6.4. Chamadas de procedimentos;
7. CONCEITOS BÁSICOS SOBRE OTIMIZAÇÃO DE CÓDIGO;
7.1. Introdução;
7.2. As principais fontes de otimização;
7.3. Otimização dos blocos básicos;
8. FERRAMENTAS PARA A IMPLEMENTAÇÃO DE COMPILADORES;
8.1. Introdução;
8.2. Planejando um compilador;
8.3. Abordagens para o desenvolvimento de compiladores;
PROCEDIMENTOS METODOLÓGICOS
As aulas à distância serão realizadas em vídeo aulas, material disponível no Ambiente Virtual de
Aprendizagem (AVA), atividades de apoio para exploração e enriquecimento do conteúdo
trabalhado, fóruns de discussão, atividades de sistematização e avaliações virtual e presencial.

RECURSOS DIDÁTICOS
Materiais disponíveis no Ambiente Virtual de Aprendizagem.
Fóruns
Atividades Sistematizadas
Vídeos curtos (menos de 10 min).
Multimídia em CDBs e dados.
Animação.
Teleaulas (aulas expositivas previamente gravadas).
Vídeos longos (mais de 10 min).
Jogos.
Programas de áudio pré-gravados (incluindo podcasts). Biblioteca Virtual.

SISTEMA DE AVALIAÇÃO
A distribuição dos 100 pontos acontecerá da seguinte forma durante o período de oferta da
disciplina: Fórum de Discussão Avaliativo: 10%
Estudo Dirigido:10%
Avaliação Online: 30%
Avaliação Presencial: 50%

Caso o aluno não alcance no mínimo 60% da pontuação distribuída, haverá a Avaliação
Suplementar com as seguintes características:

Todo o conteúdo da disciplina.


Valor: 100 pontos
Pré-requisito: Resultado Final >= 20 e <60
Regra: (Resultado Final + Nota Prova Suplementar) / 2
Média final para Aprovação: >= 60 pontos
BIBLIOGRAFIA BÁSICA:

AHO, V. A., Sethi, R., Ullman, D. J. Compiladores - Princípios, Técnicas e Ferramentas. Livros
Técnicos e Científicos Editora S.A., 1995.
LOUDEN, Kenneth C. Compiladores: princípios e práticas. São Paulo, Pioneira Thomson Learning,
2004.
GRUNE, D. et AL. Projeto Moderno de Compiladores: Implementação e Aplicações. Rio de
Janeiro, Campus, 2001.
BIBLIOGRAFIA COMPLEMENTAR:

PRICE, Ana M. A., TOSCANI, Simão S. Implementação de Linguagens de Programação:


Compiladores. Porto Alegre, Editora Sagra Luzzatto, 2005.
APPEL, A. W. Modern Compilrer Implementation in Java. Cambridge, 1998.
TANENBAUM, A. S. Organização Estruturada de Computadores. 4 ed. Rio de Janeiro, LTC, 2001.

Você também pode gostar