Disciplina
Compiladores
Área
Área Científica de Metodologia e Tecnologias da Programação > Linguagens de Programação
Activa nos planos curriculares
LEIC-T 2021 > LEIC-T 2021 > 1º Ciclo > Área Principal > Compiladores
LEIC-A 2021 > LEIC-A 2021 > 1º Ciclo > Área Principal > Compiladores
MEEC 2006 > MEEC 2006 > 2º Ciclo > Área de Especialização > Área de Especialização Secundária > Computadores > Metodologia e Tecnologia da Programação > Compiladores
LEIC-T 2006 > LEIC-T 2006 > 1º Ciclo > Ciências da Engenharia Informática > Compiladores
LEIC-A 2006 > LEIC-A 2006 > 1º Ciclo > Ciências da Engenharia Informática > Compiladores
Nível
Projeto: 50%, com nota mínima de 9,5 valores, realizado em 3 entregas (inicial, intermédia e final) com teste prático final individual. Exercícios de laboratório: 50%, com nota mínima de 9,5 valores. O processo de avaliação é o mesmo para todos os alunos, incluindo trabalhadores-estudantes. Em época especial os exercícios de laboratório são substituídos por um exame de 180min.
Tipo
Não Estruturante
Regime
Semestral
Carga Horária
1º Semestre
2.0 h/semana
1.5 h/semana
119.0 h/semestre
Objectivos
Aquisição de conceitos sobre a definição de linguagens de programação.Obtenção de conhecimentos sobre os métodos de análise (front-end) e síntese (back-end) mais usados pelos compiladores. Especificação lexical e sintáctica, bem como a análise semântica das linguagens de computação, com especial ênfase nas linguagens de programação. Desenvolver um compilador para uma linguagem de programação simples que gere código máquina executável.
Programa
Unix programming environment: gcc, gdb, cvs, make, lex and yacc tools. Regular languages and lexical analysis: modeling sentence recognition with finite automata (non-deterministic and deterministic). Context free languages: context free grammars, derivation trees, stack finite automata, descendent parsers LL(1) and bottom-up parsers LR(0)/ SLR(1) / LALR(1). Attribute grammars and attribute evaluation. Error treatment and recovery, semantic analysis. Intermediate code generation of abstract trees and postfix code. Topics of final code generation and optimization for "load and store" machines.
Metodologia de avaliação
Projeto: 50%, com nota mínima de 9,5 valores, realizado em 3 entregas (inicial, intermédia e final) com teste prático final individual. Exercícios de laboratório: 50%, com nota mínima de 9,5 valores. O processo de avaliação é o mesmo para todos os alunos, incluindo trabalhadores-estudantes. Em época especial os exercícios de laboratório são substituídos por um exame de 180min.
Pré-requisitos
n.a.
Componente Laboratorial
Exercícios de programação individual (N), sem consulta, todas as semanas em aula. Apenas os melhores N-3 são levados em consideração
Princípios Éticos
Todos os membros de um grupo são responsáveis pelo trabalho do grupo. Em qualquer avaliação, todo aluno deve divulgar honestamente qualquer ajuda recebida e fontes usadas. Numa avaliação oral, todo aluno deverá ser capaz de apresentar e responder a perguntas sobre toda a avaliação.
Componente de Programação e Computação
No curso onde esta UC é oferecida estão asseguradas as componentes de Computação e Programação de acordo com o MEPP 2122.
Componente de Competências Transversais
Não existindo uma componente explícita de Competências Transversais a desenvolver no âmbito desta UC, o desenvolvimento de um projecto levará ao desenvolvimento de Pensamento Crítico e Inovador e Competências Intrapessoais.
Bibliografia
Principal
Compilers: Principles, Techniques, & Tools (2nd Edition)
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
Compiladores - da Teoria à Prática
Pedro R. Santos, Thibault Langlois
Secundária
Processadores de Linguagens, da concepção à implementação