Compiladores

Ano
3
Ano lectivo
2016-2017">2016-2017
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, 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ã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

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.