Compiladores
3
2016-2017">2016-2017
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, autómatos finitos e programação procedimental.
Métodos de Ensino
As aulas teórico-práticas (TP) destinam-se sobretudo à exposição da matéria pelo docente e ao esclarecimento de dúvidas de interesse geral para a turma, consolidando-se também os conceitos através da realização de exercícios de papel e lápis. As aulas de prática laboratorial (PL) destinam-se a realizar exercícios envolvendo a programação de analisadores (utilizando, p.ex., lex e yacc) e para apoio às diferentes metas 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
9. Fundamentos de otimizaçã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
Principal | Required:
- Engineering a Compiler, 3rd edition, K. D. Cooper, L. Torczon, Morgan Kaufmann, 2022.
- Compilers: Principles, Techniques, and Tools, 2nd edition, A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman, Addison-Wesley, 2006.
Secundária | Supplemental:
- Crafting Interpreters, R. Nystrom, Genever Benning, 2021.
- Modern Compiler Implementation in C, A. W. Appel, Cambridge University Press, 1998.
- Processadores de Linguagens: da concepção à implementação, R. G. Crespo, IST Press, 2001.