Compilação
Código: 21018
Departamento: DCET
ECTS: 6
Área científica: Engenharia Informática
Total de horas trabalho: 156
Total de horas de contacto: 26

A unidade curricular aborda a especificação e tratamento formal de linguagens de programação, com vista à criação de programas que interpretem, compilem ou processem documentos nessas linguagens.

1. Análise léxica
2. Análise sintática
3. Geração de código
4. Otimização de código

Os alunos devem ser capazes de compreender e implementar as diversas fases de um compilador, desde a sua especificação até à implementação. Para tal, deverão ser capazes de:
Compreender as estruturas matemáticas que permitem a especificação de linguagens de programação;
Especificar formalmente uma linguagem de programação;
Implementar, recorrendo a ferramentas adequadas, um compilador, interpretador ou processador dessa mesma linguagem.

Processamento de linguagens. Compiladores e Interpretadores. Tarefas de um compilador. Fases do compilador.
Análise léxica. Análise sintática. Análise semântica. Geração de código. Otimização de código

Compilers: principles, techniques and tools, 2nd Ed., Aho, Lam, Setti, Ullman, Addison-Wesley, 2007.
Flex & Bison, Levine. O'Reilly, 2009.
Compiladores: Da Teoria à Prática, Pedro Reis Santos e Thibault Langlois. FCA, 2014.

E-learning.

O regime de avaliação preferencial é o de avaliação contínua, constituída pela realização de 2 e-folios (trabalhos escritos em formato digital), ao longo do semestre letivo, e de um momento final de avaliação e-fólio Global (e-fólioG), a ter lugar no final do semestre, com peso de, respetivamente, 40% e 60% na classificação final. Os estudantes podem, no entanto, em devido tempo, optar um único momento de avaliação, realizando, então uma prova de Avaliação Final (exame) com o peso de 100%.

Pré-requisitos: conhecimentos de programação (u.c. 21178 – Laboratório de Programação) e dos conceitos formais de línguas (u.c. 21078 – Linguagens e Computação)

Apresentação pessoal do docente