Disciplina
Compiladores
Área
Área Científica de Metodologia e Tecnologias da Programação > 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
Projecto: 40% Aulas práticas: 10% Exame/testes: 50%
Tipo
Não Estruturante
Regime
Semestral
Carga Horária
1º Semestre
3.0 h/semana
1.5 h/semana
105.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
Ambiente de desenvolvimento Unix: ferramentas gcc, gdb, cvs, make, lex e yacc. Linguagens regulares e análise lexica: modelação do reconhecimento de frases, em analisadores lexicos, por autómatos finitos (deterministas e não-deterministas). Linguagens livres de contexto: gramaticas livres de contexto, árvores de derivação, autómatos finitos com pilha, analisadores sintacticos descendendes LL(1), e ascendendes LR(0)/ SLR(1)/ LALR(1). Gramáticas atributivas e avaliação de atributos. Tratamento e recuperação de erros, analise semântica estática e dinâmica: erros gramaticais, manipulação de identificadores, tipificação e árvores de activação. Geração de código intermédio em árvores abstractas e código postfix. Tópicos de geração e optimização de código final para maquinas "load and store".
Metodologia de avaliação
Projecto: 40% Aulas práticas: 10% Exame/testes: 50%
Pré-requisitos
Componente Laboratorial
Princípios Éticos
Componente de Programação e Computação
Componente de Competências Transversais
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