Conteúdo / Main content
Menu Rodapé
  1. Início
  2. Cursos
  3. Engenharia Informática
  4. Linguagens de Programação e Compiladores

Linguagens de Programação e Compiladores

Código 14460
Ano 1
Semestre S1
Créditos ECTS 6
Carga Horária PL(30H)/T(30H)
Área Científica Informática
Objectivos de Aprendizagem Os estudantes deverão adquirir as seguintes competências:

Conceber, planear, desenhar e implementar em software processadores de linguagens artificiais e de informação especificada textualmente segundo determinadas regras lexicais e sintácticas;
Conceber e implementar em software as várias etapas relacionadas com compiladores.
Conceber front end e back-ends de compiladores, sistemas de tipo poderosos e modernos, optimizadores de código;
Conceber, planear, desenhar e implementar linguagens de programação;
Conceber e implementar em software as várias etapas relacionadas com a construção de compiladores, perceber em que medida podem ser usadas fora do contexto da compilação;
Concerber desenhar e implementar analisadores estáticos de programas para a optimização e o controlo comportamental de programas (segurança, perfil, depuração, optmização, etc.);
Perceber os detalhes internos da linguagens de programação.
Conteúdos programáticos Aula 1 - Assembly x86-64
Aula 2 - Sintaxe abstracta, semântica formal, interpretadores
Aula 3 - Tipagem, sistemas e algoritmos
Aula 4 - Análise léxica
Aula 5 - Análise sintáctica (descendente) - ficheiro com o código do analisador exposto nas aulas (aqui)
Aula 6 - Análise sintáctica (ascendente)
Aula 7 - Compilação de linguagens imperativas, modos de passagem de parâmetros
Aula 8 - Compilação das linguagens funcionais
Aula 9 - Compilação das linguagens orientadas a objectos
Aula 10 - Alocação de memória
Aula 11 - Produção de código eficiente -
Aula 12 - Ordens, reticulados e a framework monótona
Aula 13 - Análise de fluxo de dados
Aula 14 - Path Sensitivity, análise interprocedural e análise de fluxo de controlo
Aula 15 - Análise de apontadores
Metodologias de Ensino e Critérios de Avaliação A avaliação avaliará a aprendizagem teóricas e prática dos conceitos introduzidos. Como tal, esta será constituida

por uma provas escrita;
por um projecto prático de construção de um pequeno compilador acompanhada da justificação teórica das diferentes fases de compilação implementadas
pela entrega do código completo resultante da realização das práticas laboratoriais.

Fraudes
A equipa docente gostaria de realçar que qualquer tipo de fraude em qualquer dos itens desta disciplina implica a reprovação automática do aluno faltoso, podendo ainda vir a ser alvo de processo disciplinar. Listamos a seguir as diferentes componentes da avaliação.

Bibliografia principal Andrew A. Appel. Modern Compiler Implementation in ML.
A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd edition, Addison Wesley, 2006. ISBN 0-321-48681-1.
Benjamin C. Pierce. Types and Programming Languages.
Flemming Nielson, Hanne R. Nielson, and Chris L. Hankin. Principles of Program Analysis.
Hanne. R. Nielson and Flemming Nielson. Semantics with Applications - an appetizer.
Anders Møller and Michael I. Schwartzbach. Static Program Analysis.
Randal E. Bryant et David R. O’Hallaron. Computer Systems: A Programmer’s Perspective.
Língua Português
Data da última atualização: 2023-10-23
As cookies utilizadas neste sítio web não recolhem informação pessoal que permitam a sua identificação. Ao continuar está a aceitar a política de cookies.