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

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.