Interpretação e Compilação de Linguagens

Objectivos

Saber

1.Conhecer a arquitetura e técnicas usadas no desenho e implementação de interpretadores, compiladores e sistemas de tipos

2.Conhecer os elementos base das linguagens de programação e a sua semântica

3.Definir linguagens de programação por composição de elementos fundamentais

Saber Fazer

4.Representar e manipular a sintaxe abstracta de uma linguagem como dados de um programa transformador

5.Descrever a semântica de linguagens através de interpretadores, compiladores e verificadores de tipos

6.Conceber e implementar compiladores para uma máquina virtual industrial

Competências complementares

7.Raciocinar sobre sistemas complexos a vários níveis de abstração

8.Propor e concretizar soluções gerais com base em princípios

Caracterização geral

Código

8152

Créditos

6.0

Professor responsável

Luís Manuel Marques da Costa Caires

Horas

Semanais - 4

Totais - A disponibilizar brevemente

Idioma de ensino

Português

Pré-requisitos

Conhecimentos de programação avançada. estruturas de dados e algoritmos.

Bibliografia

- “Concepts in Programming Languages”, John C. Mitchell, Cambridge University Press. ISBN 0 521 78098 5 - “Essentials of Programming Languages”, Daniel Friedman, Mitchell Wand, Christopher Haynes, MIT Press. - “Compiling for the .Net Common Language Runtime (Clr) (.NET Series)”, John Gough, Prentice Hall PTR - “Modern Compiler Implementation in Java” Andrew W. Appel, Cambridge University Press - “The Study of Programming Languages”, Ryan Stansifer, Prentice Hall International Edition.

Método de ensino

A disponibilizar brevemente

Método de avaliação

Handout Fase #1  

Deadline: 11 Nov (semana)

Handout Fase #2  

Deadline: 12 Dez (semana)

Testet Intermédio: 11 de Novembro

Teste Final: 12 Dez (semana)

Valorização: Hamdout 4 valores; Teste Intermédio: 8 valores; Teste Final 8 valores

Conteúdo

A.Princípios 1.Sintaxe das Linguagens de Programação 2.Semântica das Linguagens de Programação 3.Níveis de Interpretação (Interpretação, compilação e sistemas de tipos) B.Interpretação de Programas 1.Valores e Expressões: Definições e Ambiente 2.Estado e Referências: Modelo ambiente-memória 3.Abstração funcional: funções de primeira classe e ordem superior 4.Definições recursivas e ambientes circulares 5.Valores estruturados: registos e valores recursivos 6.Objetos e classes: representação de objetos usando registos e fechos C.Sistemas de Tipos 1.Princípios, objectivos e limitações da análise estática 2.Sistemas de tipos simples 3.Algoritmos de verificação e inferência de tipos D.Compilação de Programas 1.Arquitetura de um compilador 2.Ambientes de suporte à execução (máquinas de registos, pilha de avaliação, pilha de chamada) 3.Tradução de código dirigida pela sintaxe 4.Geração de código para uma máquina virtual industrial (CLR,Java Virtual Machine)

Cursos

Cursos onde a unidade curricular é leccionada: