Compiladores
3
2017-2018
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 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 teórico-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 da geração de código executável a partir de um programa escrito numa linguagem de programação de alto ní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 implementar essas fases de um compilador, quer de raiz, quer usando ferramentas adequadas; alguns princípios de geração do código final.
Para 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.
Docente(s) responsável(eis)
Raul André Brajczewski Barbosa
Métodos de Avaliação
Avaliação
Projecto: 40.0%
Exame: 60.0%
Bibliografia
- Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Compilers – Principles, Techniques, and Tools, Addison-Wesley, 1986. (2nd edition published in 2006)
- Andrew W. Appel. Modern Compiler Implementation in C, Cambridge University Press, 1998.
- Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, and Koen G. Langendoen, Modern Compiler Design, John Wiley & Sons, Ltd, 2000. (2nd edition published in 2012).
- Rui Gustavo Crespo. Processadores de Linguagens, da concepção à implementação. IST Press. 2001. http://istpress.ist.utl.pt/lprocess.html
Andrew W. Appel. Modern Compiler Implementation in Java, 2nd ed,. Cambridge University Press, 2002.