Código: 21018ECTS: 6Departamento: Departamento de Ciências e TecnologiaÁrea Científica: Engenharia InformáticaPalavras-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 MoraisCorreio Eletrónico: jmorais@uab.ptSinopse:
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ódigoBibliografia:
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: 156Total de Horas de Contacto: 26Avaliaçã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