Rogério Reis


Err and err and err again, but less and less and less.


17 Fevereiro
Apresentação do curso. Pré-requisitos e objectivos. Definição das regras de avaliação e funcionamento do curso.
21 Fevereiro
Análise Léxica:
Modelos para a representação de linguagens regulares. Expressões regulares, autómatos finitos determinísticos e não determinísticos. Conversões entre os diversos modelos. Derivadas de Brzozowski de uma expressão regular. O autómato determinístico de Brzozowski.
25 Fevereiro
Análise Léxica:
Transformação de autómatos não determinísticos (NFA) em autómatos determinísticos (DFA).
Minimização de DFAs. O algoritmo de Moore.
28 Fevereiro
Análise Sintática:
As linguagens de programação não são (em geral) regulares.
Gramáticas independentes do contexto (CFG). Derivação de uma palavra por uma CFG. Árvores de derivação. Gramáticas ambíguas.
4 Março
Análise Sintática:
Remoção de ambiguidades. Parsers Top-Down e Bottom-Up. O parser CYK. A from a normal de Chomski.

7 Março
Análise Sintática:
O parser LR(0) e suas limitações.
11 Março
Análise Sintática:
Os conjuncts Initial e Follow de símbolos de uma gramática.
Os parsers LR(1) e LALR.
14 Março
Análise Sintática:
Exemplo de construção de um analisador léxico e sintático com o módulo Python PLY.
O exemplo usado pode ser encontrado aqui.
15 Março
Gramáticas de atributos. Atributos sintéticos e herdados. Estratégias de avaliação de atributos.
18 Março
Construção de AST a partir da análise sintática. Syntactic Directed Definitions. Atributos estáticos e dinâmicos.
21 Março
Esclarecimento de dúvidas sobre a resolução do 1º trabalho prático.
4 Abril
Código de três endereços e suas diversas representações.
8 Abril
Declarações de tipos e o seu propósito. Tipos simples e complexos.
11 Abril
Compilação de instruções de controlo de fluxo.
15 Abril
Compilação de expressões de avaliação de booleanos. Estruturas estáticas vs estruturas dinâmicas.
18 Abril
Papel e configuração dos registos de activação na pilha de execução.
22 Abril
Tail Recursion Optimization. Definição de funções dentro de funções, os seus problemas e a resolução da visibilidade das variáveis respectivas.
Estratégias de administração da Heap.
29 Abril
Esclarecimento de dúvidas sobre a resolução do 2º trabalho.
2 de Maio
Esclarecimento de dúvidas sobre a resolução do 2º trabalho.
14 de Maio
O Apoo como exemplo muito simples de uma linguagem Assembly.
20 de Maio
Segmentação do código em blocos elementares. Conceito de vitalidade de uma variável. Eliminação de variáveis inúteis. Eliminação de código inútil. Optimização algébrica.
23 de Maio
Alocação de registos.
27 de Maio
Optimizações não locais.
30 de Maio
Produção de código Assembly.
3 de Junho
Esclarecimento de dúvidas sobre o terceiro trabalho.