Riepilogo dell'insegnamento: Compilatori
6 cfu così ripartiti nelle aree:
- 6 CFU nell'area D - Linguaggi
Sillabo dell'insegnamento
- D - Linguaggi
- *
LF - Linguaggi Formali
Linguaggi di Programmazione e Processori di Linguaggi di Programmazione. 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
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.
- *
LF - Linguaggi Formali
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). 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.
- *
TTCI - Tecniche di Traduzione: Compilatori e Interpreti
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
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. Generazione del codice: Codice intermedio. Codice a tre indirizzi. Strutture dati per l'implementazione del 3AC. Codice per macchina virtuale. P‐code. 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
Compilatori e Linguaggi. Linguaggi Macchina, Linguaggi Assembly ed evoluzione dei linguaggi di programmazione.
(*) Le sottoaree con asterisco sono quelle che il GRIN ritiene essenziali