Programa

Compiladores

Licenciatura Bolonha em Engenharia Informática e de Computadores - Taguspark

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".

Compiladores

Licenciatura (5 anos) em Engenharia Informática e de Computadores - Taguspark

Programa

* Análise lexical: o Desenvolver a capacidade de identificar e especificar sequências de símbolos terminais através de expressões regulares. o Construção de um autómato finito não-determinista (NDFA) a partir de uma expressão regular: algorítmo de Thompson. o Construção de um autómato finito determinista (DFA) a partir de um NDFA. o Reconhecimento de frases por DFAs. o O gerador de analisadores lexicais LEX: formato do ficheiro de especificação e rotinas auxiliares. * Análise sintáctica: o Desenvolver a capacidade de identificar e especificar uma gramática. o Derivação, recursividade e ambiguidade de gramáticas. Autómato de pilha. o Analisadores sintácticos descendentes recursivos, factorização à esquerda. o Identificação de analisadores sintácticos preditivos não recursivos. o Identificação dos conjuntos FIRST e FOLLOW, construção de tabelas pelo método LL(1). o O analisador sintáctico ascendente LR: arquitectura e reconhecimento de frases. o Identificação das tabelas pelo método SLR(1). o Conflitos nas tabelas e sua possível resolução. Compactação de tabelas de análise ascendente. o Construção das tabelas pelo método LALR(1). o O gerador de analisadores sintácticos YACC: formato de ficheiros, transporte de valores pela pilha, ligação entre o LEX e YACC, recuperação de erros. * Análise semântica: o Gramáticas atributivas. o Atributos sintetizados e herdados. Definições do tipo S e do tipo L. o Avaliação de definições por analisadores sintácticos ascendentes. o Estruturas de dados para representação em memória de árvores de derivação. o Manipulação de identificadores: tabelas de símbolos, visibilidade, alcance. o Tipificação: sistemas de tipos, verificação de tipos, polimorfismo. Invocação de rotinas, registos de activação. * Geração de código: o Interpretação por árvore e threading. o Geração no YACC de uma árvore sintática. o Geração de código intermédio. Código C3E. o Geração no YACC de expressões aritméticas, lógicas e de fluxo. o Árvores de activação: gestão de memória, o Geração de código final: máquinas baseadas em pilhas de dados (stack machines). o Tipos de processadores e alternativas de geração de código. o Optimização: blocos básicos, processo de análise, transformações. o Técnicas básicas de optimização: alto-nível, local, peephole e global. o Geração de código final: tópicos.