Compiladores
3
2024-2025
01000287
Informática
Português
Presencial
Semestral
6.0
Obrigatória
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 teorico-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 de compilação de programas escritos em linguagens de alto nível, com vista à geração de código executá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 construir essas fases de um compilador, quer de raiz quer usando ferramentas adequadas; e os princípios da geração de código. Para além da construção de compiladores, este conhecimento tem aplicação em amplas questões na informática. 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ãoPrograma
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
Bibliografia essencial | Required textbook:
- Compilers: Principles, Techniques, and Tools, 2nd edition, A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman, Addison-Wesley, 2006.
Bibliografia suplementar | Supplemental bibliography:
- Modern Compiler Implementation in C, A. W. Appel, Cambridge University Press, 1998.
- Modern Compiler Design, 2nd edition, D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen, Springer, 2012.
- Processadores de Linguagens: da concepção à implementação, R. G. Crespo, IST Press, 2001.
- Modern Compiler Implementation in Java, A. W. Appel, Cambridge University Press, 2002.