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: 2022/2023 - 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 248 Plano Oficial 3 - 6 52 162
Mais informaçõesA ficha foi alterada no dia 2023-02-07.

Campos alterados: Fórmula de cálculo da classificação final, Métodos de ensino e atividades de aprendizagem

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

Para obtenção de frequência: nota do projeto (PRJ) >= 8.0.
A presença nas aulas TP não é obrigatória mas altamente decomendada. Presença requerida durante s sessões de demonstração dos projectos de programação.

Fórmula de cálculo da classificação final

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-14 às 10:28:41 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias