Compiladores

Ano
3
Ano lectivo
2019-2020
Código
01000287
Área Científica
Informática
Língua de Ensino
Português
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Obrigatória
Nível
1º Ciclo - Licenciatura

Conhecimentos de Base Recomendados

Conhecimentos básicos de Algoritmos, Estruturas de Dados e Autómatos Finitos (unidades curriculares de Algoritmos e Estruturas de Dados e de Teoria da Computação).

Métodos de Ensino

As aulas teóricas (T) destinam-se sobretudo à exposição da matéria pelo docente e ao esclarecimento de dúvidas de interesse geral para a turma. As aulas teórico-práticas (TP) servem para consolidar os conceitos apresentados nas aulas T, através da realização de exercícios de papel e lápis e de programação (utilizando p.ex. lex e yacc), e para a apresentação das diferentes metas do projeto. As aulas de prática laboratorial (PL) destinam-se a dar mais apoio à realização dos exercícios propostos nas aulas TP e ao acompanhamento da realização do projeto.

Resultados de Aprendizagem

Proporcionar ao estudante um contacto aprofundado com as metodologias e técnicas da geração de código executável a partir de um programa escrito numa linguagem de programação de alto nível. Em particular, o estudante deverá passar a compreender: os objetivos e a arquitetura de um compilador; os princípios das análises lexical, sintática e semântica e saber implementar essas fases de um compilador, quer de raiz, quer usando ferramentas adequadas; alguns princípios de geração do código final.
Para além destas competências relacionadas com o âmbito de estudo, espera-se que os alunos desenvolvam capacidades de análise e de síntese, de raciocínio crítico, de aplicação prática dos conhecimentos adquiridos e se preocupem com questões de qualidade. Também se pretende fomentar a aprendizagem autónoma, a capacidade de trabalho em grupo, a comunicação oral e escrita e a capacidade de resolver problemas.

Estágio(s)

Não

Programa

1.    Objetivos e arquitetura de um compilador
2.    Análise lexical
3.    Análise sintática (descendente e ascendente)
4.    Sintaxe abstrata
5.    Análise semântica
6.    Registos de ativação
7.    Representação intermédia
8.    Geração de código.

Docente(s) responsável(eis)

Raul André Brajczewski Barbosa

Métodos de Avaliação

Avaliação
Projecto: 40.0%
Exame: 60.0%

Bibliografia

  1. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Compilers – Principles, Techniques, and Tools, Addison-Wesley, 1986. (2nd edition published in 2006)
  2. Andrew W. Appel. Modern Compiler Implementation in C, Cambridge University Press, 1998.
  3. Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, and Koen G. Langendoen, Modern Compiler Design, John Wiley & Sons, Ltd, 2000. (2nd edition published in 2012).
  4. Rui Gustavo Crespo. Processadores de Linguagens, da concepção à implementação. IST Press. 2001. http://istpress.ist.utl.pt/lprocess.html

Andrew W. Appel. Modern Compiler Implementation in Java, 2nd ed,. Cambridge University Press, 2002.