Disciplina

Á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

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 and Tools

Alfred Aho, Ravi Sethi, Jeffrey Ullman

1985

Addison-Wesley


Processadores de Linguagens, da concepção à implementação

Rui Gustavo Crespo

2001

IST Press