Dettagli sull'Insegnamento per l'A.A. 2018/2019
Nome:
Linguaggi di Programmazione e Compilatori / Compilers
Informazioni
Crediti:
: Bachelor Degree in Computer Science 6 CFU (b)
Erogazione:
Bachelor Degree in Computer Science 3rd anno curriculum General Compulsory
Lingua:
Italiano
Prerequisiti
Conoscenza delle nozioni base della teoria dei linguaggi formali e della programmazione
Obiettivi
Nel corso viene illustrata la struttura dei compilatori e sono presentate le principali metodologie impiegate nelle varie fasi del processo di compilazione, in particolare i principi e le tecniche della parte di analisi di un compilatore
Sillabo
- Elementi di teoria di linguaggi formali. Introduzione ai compilatori: il modello analisi-sintesi, fasi della compilazione, interpreti
- Architettura e ruolo dell'analizzatore lessicale: tokens-patterns-lessemi, buffering dell'input, algoritmo di Thompson
- Analisi sintattica: parsing top-down, parsing bottom-up. Parsing predittivo non ricorsivo
- Parsing LR: tecniche SLR, LALR, LR canonica
- Gerarchia di grammatiche LR e gestione di grammatiche ambigue
- Traduzione guidata dalla sintassi. Definizioni dirette dalla sintassi: attributi ereditati e sintetizzati, definizioni con S-attributi, definizioni con L-attributi
- Schemi di traslazione. Analisi semantica e type checking
- Generazione di codice intermedio. Three-address code: sintassi ed esempi di generazione
Descrittori di Dublino
Alla fine del corso, lo studente dovrebbe
- conoscere la struttura e il ruolo dei compilatori, conoscere e capire i principi e le tecniche utilizzate nelle varie fasi del processo di compilazione
- applicare le metodologie studiate allo sviluppo di semplici progetti software riguardanti la costruzione di parti di compilatore
- saper valutare le caratteristiche delle componenti lessicali e sintattiche di una specifica di traduzione guidata dalla sintassi e scegliere la soluzione più adatta al suo sviluppo
- capire e saper spiegare le relazioni fra strumenti e risultati provenienti dalla teoria dei linguaggi formali e le loro applicazioni nelle fasi di analisi del compilatore
- essere capace di leggere e capire altri testi su argomenti correlati
Testi di riferimento
- A.V. Aho, R. Sethi, J.D. Ullmann, Compilers, principles, techniques and tools , Addison-Wesley, Reading, Mass.
Modalità d'esame
Gli studenti sono incoraggiati a partecipare attivamente alle lezioni facendo domande e discutendo le soluzioni adottate negli esempi sviluppati in aula. L'esame consiste in una prova scritta sugli argomenti trattati nel corso. E' prevista anche una prova intermedia scritta che copre la prima parte del programma del corso in modo che gli studenti possano dividere il carico di studio.
L'esame scritto (durata 2 ore) è costituito da un insieme di domande per la verifica delle competenze teoriche/formali e per la verifica della capacità di comprendere e risolvere esercizi significativi.
Criteri di valutazione saranno: la padronanza dei principi e delle tecniche presentate nel corso, nonché la capacità di applicarle; la chiarezza e la completezza delle spiegazioni.
Aggiornamenti alla pagina del corso
Le informazioni sulle editioni passate di questo corso sono disponibili per i seguenti anni accademici:
Per leggere le informazioni correnti sul corso, se ancora erogato, consulta il catalogo corsi di ateneo.
Ultimo aggiornamento delle informazioni sul corso: 01 febbraio 2017, 12:32