Diario delle lezioni
- 8/3/10. Il disegno di legge Gelmini sull'università.
Presentazione del corso.
Le prime fasi della compilazione (front end).
- 10/3/10. Le fasi successive della compilazione (back end).
Espressioni regolari.
Automi finiti deterministici e non.
Esercizi.
- 15/3/10. Conversione di espressioni regolari in epsilon-NFA,
e di epsilon-NFA in DFA. Minimizzazione di un DFA.
Osservazioni sulla generazione automatica di
analizzatori lessicali.
- 17/3/10. Esercizi su espressioni regolari.
Introduzione ad ANTLR come generatore di analizzatori
lessicali.
- 22/3/10. Grammatiche context-free. Derivazioni ed alberi
di derivazione. Grammatiche ambigue.
- 24/3/10. Algoritmi di parsing.
Introduzione alle famiglie LL ed LR.
Esercitazione con ANTLR.
La tecnica del "panic mode" per la gestione degli errori lessicali.
- 12/4/10. Tassonomia degli algoritmi di parsing.
L'algoritmo LL(k) e le sue implementazioni table-driven e recursive descent.
- 14/4/10. Ambiguità del cast nei linguaggi Java, C/C++ e C#.
Generazione automatica di un parser LL(1).
Le funzioni Eps, First, Follow e Predict.
- 16/4/10. (lezione straordinaria) Esercitazione:
esercizi 2.11 e 2.12 dal libro di teoria.
- 19/4/10. Conflitti ed ambiguità. Limiti dell'algoritmo LL(k):
grammatiche left-recursive.
Introduzione all'algoritmo LL(*). L'Extended Backus-Naur Form (EBNF).
Grammatiche per espressioni aritmetiche.
- 21/4/10. Codificare associatività e precedenza degli operatori
aritmetici in una grammatica LL. Grammatiche non LL(*). Fattorizzazione.
I predicati sintattici di ANTLR.
- 23/4/10. (lezione straordinaria) Esempi di uso dei predicati sintattici.
Realizzare un interprete di espressioni aritmetiche.
(fine della prima parte del corso)
- 3/5/10. Attributi ereditati e loro implementazione in ANTLR: parametri
dei non-terminali.
- 5/5/10. Implementare la tabella dei simboli. Gli scope e la loro implementazione
in ANTLR.
- 10/5/10. Gli scope globali in ANTLR.
Rappresentare in Java il sistema dei tipi del C.
- 12/5/10. Trattamento degli errori sintattici in ANTLR.
Rappresentare in Java il sistema dei tipi di Java.
Introduzione al type checking: accesso agli array.
- 17/5/10. La compilazione separata, in C e in Java.
Compilazione in due fasi.
La prima fase: raccolta delle interfacce di classe.
- 19/5/10. Esercitazione: lexer per il linguaggio Ja.
Alberi sintattici astratti.
- 24/5/10. Creare alberi sintattici astratti con ANTLR.
Operatori "!" e "^". Regole di riscrittura.
- 26/5/10. Esercitazione: rappresentare in Java il sistema dei tipi Java.
- 31/5/10. Esercitazione.
- 4/6/10. Lezione di recupero. Grammatiche che riconoscono alberi.
Realizzare un interprete per espressioni aritmetiche con variabili.
- 7/6/10. Esercitazione. Controlli a tempo di compilazione relativi
all'overloading e all'overriding.
- 9/6/10. Esercitazione. Creazione di alberi sintattici per espressioni Java. (Ultima lezione)
|
|
|