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