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 | 52,5

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.