Saltar para:
Logótipo
Você está em: Início > L.EIC026

Compiladores

Código: L.EIC026     Sigla: C

Áreas Científicas
Classificação Área Científica
OFICIAL Engenharia Informática e Computação

Ocorrência: 2023/2024 - 2S Ícone do Moodle

Ativa? Sim
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura em Engenharia Informática e Computação

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
Mais informaçõesA ficha foi alterada no dia 2024-01-29.

Campos alterados: Obtenção de frequência, Fórmula de cálculo da classificação final

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.
Recomendar Página Voltar ao Topo
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2025-06-15 às 23:31:45 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias