Oferta Formativa - Sinopse

Técnicas de Compilação

Código: 425150
Ano Letivo: 2015/16
Departamento: Informática
ECTS: 6
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática; 

Objetivos da Unidade Curricular

Pretende-se que o aluno fique a dominar as técnicas e ferramentas base processamento e compilação de linguagens, incluindo
- utilização de geradores de analisadores léxicos
- utilização de geradores de analisadores sintáticos
- geração de manipulação de árvores sintáticas abstractas (ASA)
- verificação de restrições semânticas sobre ASA
- geração de código para máquinas virtuais
- introdução à optimização


Pré-requisitos

  • Algoritmos e Estruturas de Dados (26723)
  • Desenvolvimento Centrado em Objetos (26727)
  • Linguagens Formais e Autómatos (26729)

Conteúdos

Apresentação do processo de compilação
Design de um compilador simples
Análise lexicográfica e sintática
Compilação dirigida pela sintaxe
Processamento de declarações
Análise semântica
Representações intermédias
Síntese para máquinas virtuais
Otimização

 

Descrição detalhada dos conteúdos programáticos

Componente Teórica

Descrição geral do processo de compilação
Apresentação da linguagem alvo do compilador simples a explorar
Introdução da noção Árvore Sintática Abstrata (ASA)
Apresentação de algumas técnicas de suporte à análise lexicográfica e sintática
Compilação dirigida pela sintaxe
Uso de tabelas de símbolos e processamento de declarações
Análise semântica sobre instruções condicionais, ciclos e chamadas de métodos
Representações intermédias enquanto linguagens de baixo nível independentes da plataforma
Síntese para máquinas virtuais
Estruturas de suporte à execução
Otimização baseada em análise de fluxo de dados

 

Componente Teórica-Prática

ver acima

 

Componente Prática

ver acima

 

Bibliografia

Recomendada

Crafting a Compiler. Charles N. Fischer, Ron K. Cytron and Richard J. LeBlanc. Addison-Wesley, 2010
Modern Compiler Implementation in Java. Andrew W. Appel and Jens Palsberg, 2nd edition. Cambridge University Press, 2002

 

Outros elementos de estudo

Version Control with Subversion. Ben Collins-Sussman, Brian W. Fitzpatrick and Michael Pilato. O'Reilly Media, 2008
JUnit in Action, Second Edition. Petar Tahchiev, Felipe Leme, Vincent Massol, and Gary Gregory. Manning, 2010
The JavaTM Virtual Machine Specification, Java SE7 Edition. Tim Lindholm, Frank Yelli, Gilad Bracha and Alex Buckley. Oracle, 2012
Java Virtual Machine. Troy Downing and Jon Meyer. O'Reilly Media, 1997

 

Métodos de Ensino

Nas aulas teóricas e teórico-práticas são expostos os conteúdos programáticos recorrendo ao desenvolvimento de um compilador para uma linguagem simples como pano de fundo comum.

 

Métodos de Avaliação

A componente prática consiste na escrita de um compilador, tem cinco entregas faseadas no tempo e vale 10 valores na nota final. A componente teórica consiste num exame escrito que vale 10 valores na nota final.

 

Língua de ensino

Português ou Inglês