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

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.