Compilatori (2019/2020)

Codice insegnamento
4S00041
Docente
Alessandra Di Pierro
Coordinatore
Alessandra Di Pierro
crediti
6
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
Periodo
II semestre dal 2-mar-2020 al 12-giu-2020.

Orario lezioni

Vai all'orario delle lezioni

Obiettivi formativi

Il corso si propone di fornire le competenze necessarie per lo sviluppo e l'implementazione di compilatori e interpreti per semplici linguaggi di programmazione.
 Al termine del corso lo studente avrà acquisito le nozioni teoriche alla base delle varie fasi del processo di compilazione di un programma; avrà inoltre le capacità di applicare le conoscenze acquisite per utilizzare in modo competente gli strumenti per la generazione di parser e per la comprensione della struttura di linguaggi di programmazione di uso comune; infine, sarà in grado di approfondire autonomamente le nozioni avanzate necessarie nell’ambito dell’analisi statica e in generale delle tecniche di ottimizzazione nelle varie fasi della compilazione.

Programma

Il corso prevede 44 ore di lezioni frontali destinate a coprire il programma schematizzato di seguito. Per gli ultimi due argomenti dell'elenco riportato, sono previste ulteriori 12 ore di attività in laboratorio con esercitazioni al computer sotto la supervisione del docente. Oltre ai libri di testo, viene usata la piattaforma e-learning per mettere a disposizione degli studenti materiale didattico aggiuntivo, e.g. lucidi delle lezioni, esercizi e soluzioni, materiale di supporto per le attività in laboratorio.

Programma

* Introduzione al corso e alla tecnologia dei compilatori.
* Analisi lessicale.
* Analisi sintattica.
* Sintassi astratta.
* Analisi semantica (type-checking).
* Codice intermedio.
* Generazione del codice intermedio.
* Utilizzo di strumenti automatici per la generazione di analizzatori sintattici.
* Sviluppo in laboratorio di un compilatore per un semplice linguaggio funzionale.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Aho, A.V. and Lam, M.S. and Sethi, R. and Ullman, J.D. Compilatori: Principi, tecniche e strumenti (Edizione 2) Pearson 2009 978-88-7192-559-2
Torben Aegidius Mogensen Introduction to Compiler Design Springer 2011 978-0857298287
Nielson, F., Nielson, H.R., Hankin, C. Principles of Program Analysis (Edizione 2) Springer-Verlag 2005 ISBN 3-540-65410-0

Modalità d'esame

L'esame e' inteso come una verifica dell'apprendimento delle nozioni fondamentali per la costruzione di un compilatore, nonché della conoscenza del particolare compilatore sviluppato in laboratorio.
Gli studenti devono rispondere per iscritto a quattro domande con risposta aperta di cui una e' riservata al lavoro svolto in laboratorio. Il punteggio assegnato ad ogni esercizio varia tra 0 (zero) e 7,5 per un totale massimo di 30/30.
La lode viene assegnata esclusivamente ad elaborati svolti correttamente che dimostrino con l'accuratezza dei dettagli e della presentazione piena padronanza della materia.