COMPILAçãO
Código: 21018
ECTS: 6
Departamento: Departamento de Ciências e Tecnologia
Área Científica: Engenharia Informática
Palavras-Chave:
    1. Análise léxica
    2. Análise sintática
    3. Geração de código
    4. Otimização de código
Docente:
Jorge Morais
Correio Eletrónico: jmorais@uab.pt

Sinopse:
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.


Competências:
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.


Conteúdos:
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


Bibliografia:
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.


Metodologias de Ensino:

E-learning.




Total de Horas de Trabalho: 156
Total de Horas de Contacto: 26

Avaliação:
O regime de avaliação preferencial é o de avaliação contínua, constituída pela realização de 2/3 e-folios (trabalhos escritos em formato digital), ao longo do semestre letivo, e de um momento final de avaliação presencial (p-fólio), 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 presencial de avaliação, realizando, então uma prova de Avaliação Final (exame) com o peso de 100%.


Observações:
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