Compiladores
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Engenharia Informática e Computação |
Ocorrência: 2023/2024 - 2S 
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
L.EIC |
319 |
Plano Oficial |
3 |
- |
6 |
52 |
162 |
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
Fornecer os conceitos que permitam:
- compreender as fases de compilação de linguagens, em especial das linguagens imperativas e orientada por objectos;
- especificar a sintaxe e semântica de uma linguagem de programação;
- compreender e utilizar as estruturas de dados e os algoritmos principais usados na implementação de compiladores;
- realizar a engenharia de um compilador como projecto software de larga escala
Resultados de aprendizagem e competências
As competências adquiridas permitirão aos estudantes:
- desenvolver 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, nomeadamente:
- expressões regulares e autómatos finitos;
- analisadores sintácticos e semânticos;
- analisadores semânticos;
- ambientes de execução e máquinas virtuais;
- geração de código intermédio e estruturas de suporte de análise (tabela de simbolos);
- analise de fluxo de dados e de controle e optimizações de código;
- geradores de código para processadores ou para máquinas virtuais;
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
- Linguagens de programação imperativas, orientadas por objetos.
- Algoritmos e estruturas de dados.
- Teoria da Computação.
- Arquitectura de Computadores.
Programa
- Introdução. Fases da compilação e estrutura típica de um compilador.
- Análise lexical. Expressões regulares e autómatos finitos.
- Análise sintáctica. Gramáticas. Implementação de analisadores sintácticos. Tratamento de erros.
- Análise semântica. Implementação de analisadores semânticos. Verificação de tipos.
- Ambientes de execução. Organização de memória e mecanismos para a passagem de parâmetros.
- Geração de código intermédio de baixo e de alto-nível.
- Escalonamento e alocação de registos.
- Análise de fluxo de dados e controle - blocos básicos.
- Transformação (optimização) de código.
Bibliografia Obrigatória
Cooper, Keith D.;
Engineering a compiler. ISBN: 1-55860-699-8
Bibliografia Complementar
A. Aho, M. Lam, R. Sethi, J. Ullman;
Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison Wesley, 2007. ISBN: 0321486811 (Existe 1.a edição (1986) na biblioteca)
Appel, Andrew Wilson;
Modern Compiler Implementation in Java, Cambridge University Press, 2002. ISBN: ISBN 0-521-82060-X
Métodos de ensino e atividades de aprendizagem
- Aulas teóricas: exposição dos assuntos, acompanhada por exemplos e pela apresentação de pistas para resolução dos problemas das aulas práticas e do trabalho prático ou projecto de programação.
- Aulas teórico-práticas: resolução de problemas e discussão de questões relacionadas com o trabalho prático.
Software
JASMIN, http://jasmin.sourceforge.net/.
JavaCC, https://javacc.dev.java.net/
ANTLR, https://www.antlr.org
Palavras Chave
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Teste |
50,00 |
Trabalho laboratorial |
50,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Elaboração de projeto |
50,00 |
Estudo autónomo |
56,00 |
Frequência das aulas |
56,00 |
Total: |
162,00 |
Obtenção de frequência
A aferição de frequência nesta UC incide apenas nas componentes de projectos de grupo de programação em que a classificação mínima no projecto é de 8.0. A não obtenção da classificação de 8.0 valores num dos dois projectos resulta num RFF uma vez que a classificação dos projectos não é passível de melhoria.
Não há requisites de presença nas aulas TP `a excepção nas aulas em que há demonstração dos projectos (demo).
Não são aceites classificações de qualquer elemento de classificação de anos anteriores.
Fórmula de cálculo da classificação final
Caso, uma das componentes não tenha classificação supoerior ou igual a 8.0, o estudante é reprovado por falta de componente, e elegível para recurso em que poderá repescar essa componente, ou componentes em falta.
Para obtenção de aprovação: nota final >= 9.5 e nota de cada um dos dois testes (T1 e T2) >= 8.0.
Nota final - componentes e fórmula de cálculo (todas as classificações de 0 a 20)
- T1: nota no primeiro teste (e correspondente melhoria M1)
- T2: nota no segundo teste (e correspondente melhoria M2)
- PRJ: projeto do compilador
- Nota de avaliação contínua (AC) = 0.5 * T1 + 0.5 * T2
- Nota final (NF) =
- If abs(AC-PRJ) > 4.0 Then NF = minimo(AC,PRJ) + 2.0
- case contrário, NF = 0.5 * AC + 0.5 * PRJ
Componentes que contribuem para a classificação do projeto (PRJ):
- Avaliação intermédia do projeto (1:10% e 2:20%): 25%
- Trabalho final: 60%
- Presentação/discussão do trabalho: 15%
Os elementos de classificação de anos anteriores não podem ser reutilizados.
Os testes (T1 e T2) e o exame de melhoria (M1 e M2) são provas com consulta limitada a 1 folha tamanho A4 com notas frente e verso.
Trabalho de estágio/projeto
Compreensão e extensão de vários elementos e fases de análise léxica, análise sintática, análise semântica e geração de código de um compilador para uma linguagem imperativa simples.
Este trabalho é executado em grupos de 3 alunos máximo e 2 mínimo e será baseado numa infra-estrutura existente.
Avaliação especial (TE, DA, ...)
As regras de avaliação aplicam-se a todos os estudantes, independentemente dos seus estatutos.
Melhoria de classificação
A classificação do projeto não é susceptível de melhoria no ano lectivo em curso e conta para todas as épocas (normal e de recurso). A nota da avaliação contínua (testes) poderá ser melhorada através da realização do exame de recurso, sendo levada em consideração a melhor das duas classificações nos testes que o aluno escolher efectuar recurso.