Riepilogo dell'insegnamento: Compilatori
6 cfu così ripartiti nelle aree:
- 6 CFU nell'area D - Linguaggi
Sillabo dell'insegnamento
- D - Linguaggi
-
*
LF - Linguaggi Formali
*
PL-SyA - Syntax Analysis
Analisi Lessicale: Operazioni preliminari. Token e Lessemi. Errori lessicali. Token e espressioni regolari. Definizioni regolari. Eliminazioni di ambiguità. Automi a stati finiti. Implementazioni di DFA. Simulazioni di NFA.
-
*
LF - Linguaggi Formali
*
PL-SyA - Syntax Analysis
Analisi sintattica: Grammatiche context-free. Alberi di derivazione. Grammatiche ambigue. Automi a pila deterministici e non deterministici. Complessità di calcolo di un automa a pila. Algoritmo di Earley. Errori sintattici e metodi di gestione degli errori. Parser a discesa ricorsiva. Parser LL(1). Elinimazione della ricorsione sinistra. Fattorizzazione sinistra. Insiemi First e Follow. Parser shift-reduce. Parser LR(0). Parser SLR. Parser LR(1). Parser LALR(1). Proprietà dei linguaggi e delle grammatiche LR(k). Confronto tra le grammatiche LL(k) e LR(k).
-
*
LF - Linguaggi Formali
PL-CSA - Compiler Semantic Analysis
Analisi semantica: Semantica statica e dinamica. Grammatiche con attributi. Semantica guidata dalla sintassi. Albero sintattico decorato. Calcolo degli attributi. Grafo delle dipendenze. Grammatiche con S‐attributi. Grammatiche con L-attributi. Ordinamento topologico del grafo delle dipendenze. Tabella dei simboli. Vari tipi di implementazioni tramite array, liste concatenate e ABR. Implementazione tramite hash table with chaining. Attributi di visibilità e metodi di realizzazione. Type checking. Equivalenza d tipi. Type coercion.
-
*
TTCI - Tecniche di Traduzione: Compilatori e Interpreti
+
PL-LTE - Language Translation and Execution
Differenza tra compilazione e interpretazione di un programma. Macchina Virtuale Preprocessore. Linker e Loader. Fasi della compilazione. Front End e Back End. Passate di un compilatore. Generazione automatica di scanner. Flex. Generazione automatica di parser. Bison.
-
*
TTCI - Tecniche di Traduzione: Compilatori e Interpreti
PL-CG - Code Generation
Generazione del codice: Codice intermedio. Codice a tre indirizzi. Strutture dati per l'implementazione del 3AC. Codice per macchina virtuale. Ottimizzazione del codice. Esempi di ottimizzazioni indipendenti dalla macchina. Generatori di codice oggetto. Esempi di ottimizzazioni dipendenti dalla macchina.
-
*
MATR - Macchine Astratte e Tecniche per la Realizzazione dei linguaggi di programmazione
+
PL-LTE - Language Translation and Execution
Compilatori e Linguaggi. Linguaggi Macchina, Linguaggi Assembly ed evoluzione dei linguaggi di programmazione.
Le sottoaree "obbligatorie" sono prefisse da un segno più (+). Le sottoare "suggerite" sono prefisse da un segno asterisco (*).