Contacto WhatsApp 963640100

Universidade Lusófona

Compiladores

Curso

Engenharia Informática

Grau|Semestres|ECTS

Licenciatura | Semestral | 6

Ano | Tipo de unidade curricular | Lingua

3 |Obrigatório |Português

Total de horas de Trabalho | Tempo de Contacto (horas)

168 | 45

Código

ULHT260-7347

Disciplinas complementares recomendadas

Não aplicável

Pré-requisitos e co-requisitos

Não aplicável

Precedências

Não

Estágio profissional

Não

Conteúdos Programáticos

1. Introdução à compilação e partes de um compilador.
- Notações
- O que é a compilação?
- As diferentes fases da compilação
- Arquitetura dum compilador
2. Introdução à teoria das linguagens formais
- Linguagens formais
- Gramáticas formais
- Expressões regulares
- Autómatos finitos
3. Análise lexical
- Bases teóricas
- Construção de analisadores léxicos
4. Análise sintáctica, gramáticas livres de contexto, árvores sintácticas abstratas, ambiguidade.
5. Análise sintáctica top-down e bottom-up, tratamento de erros sintácticos.
- Gramáticas
- Autómatos de pilha
- Análise Descendente
- Análise Ascendente
- Gramáticas LL
- Gramáticas LR
6. Implementação de um compilador

Objetivos

O objectivo da unidade curricular de Compiladores é o de dar aos estudantes os conhecimentos,
capacidades e competências no desenho e implementação de compiladores e ferramentas relacionadas
(intérpretes e tradutores), e no uso de expressões regulares, para os mais diversos fins na sua vida
profissional, usando para tal ferramentas profissionais de ajuda à criação de compiladores (Lex/Flex,
Yacc/Bison, Antlr). Pretende-se também que os estudantes adquiram os conhecimentos teóricos de análise
léxica e sintática que lhes permitam executar essas tarefas.

Metodologias de ensino e avaliação

Aulas teóricas com exposição dos conceitos subjacentes e reforçando esses conceitos com exercícios.
Aulas de laboratório (práticas) com uso do Lex/Flex e Yacc/Bison para implementação de intérpretes, com
exemplos de utilização de expressões regulares e do Lex/Flex para outros fins reais. Implementações em C
no sistema preferido de cada estudante (Windows, OSX ou Linux).
Avaliação contínua consistindo em:
- 2 frequências teóricas (cada vale 50% para o total da nota teórica)
- 1 projeto final (vale 100% para o total da nota prática)
Nota final: 50% da nota teórica + 50% da nota prática

Bibliografia principal

Aho, A. V.; Sethi, R.; Ullman, J. D.: "Compiladores. Principios, Técnicas y Herramientas" Addison-Wesley
Iberoamereicana. 1990.
Aho, A. V.; Ullman, J. D.: "Principles of Compiler Design" Addison-Wesley, Reading, Mass. 1977.
Aho, A. V.; Ullman, J. D.: "The Theory of Parsing, Translation and Compiling. Vol. II: Compiling"
Prentice-Hall, Englwood Cliffs, New Jersey. 1973.
Aho, A. V.; Ullman, J. D.: "The Theory of Parsing, Translation and Compiling. Vol. I: Parsing" Prentice-Hall,
Englwood Cliffs, New Jersey. 1972.
Bennet, J. P.: "Introduction to Compiling Techniques" McGraw-Hill. 1990.
Bornat, R.: "Understanding and Writing Compilers: a Do-It-Yourself Guide" Mac Millan, Londres. 1982.
Holmes, J.: "Object-Oriented Compiler Construction" Prentice-Hall International, Engewood Cliffs, New
Jersey. 1995.
Hunter, R.: "The Design and Construction of Compilers" John Wiley & Sons. Chichester, 1981.
Levine, J. R.; Mason, T.; Brown, D.: "Lex & Yacc" O'Reilly. California. 1992.