- Docente: Cosimo Laneve
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
- Corso: Laurea Magistrale in Informatica (cod. 8028)
Conoscenze e abilità da conseguire
Questo corso ha lo scopo di insegnare agli studenti le tecniche alla base della costruzione di compilatori ed interpreti. Si studieranno le problematiche da affrontare nella progettazione di linguaggi di programmazione ad alto livello, così come gli strumenti usati per effettuare syntax-directed translation e per realizzare ambienti di esecuzione del codice a basso livello. Le tecniche che verranno descritte sono impiegate in vari ambiti applicativi, ogni qualvolta si renda necessaria una analisi diretta dalla sintassi di espressioni simboliche, documenti (semi)strutturati, linguaggi specifici di dominio, e la loro traduzione in descrizioni più a basso livello. Le possibili applicazioni spaziano dall'interazione persona-computer, tecniche avanzate di ingegneria del software, includendo anche l'analisi e la verifica dei programmi. Inoltre, discutendo le problematiche legate agli ambienti di esecuzione in cui il codice ad alto livello viene tradotto ed eseguito, si approfondiranno specifici aspetti legati ai linguaggi di programmazione quali ad esempio i tipi e la programmazione orientata agli oggetti.
Contenuti
Introduzione (compilatori e interpreti). ANTLR. Analisi Lessicale. Analisi Sintattica (parser a discesa ricorsivi, parser LL, LR). Analisi Semantica (tabella dei simboli, type checking). Generazione di codice intermedio. Macchina virtuale e interprete.
Testi/Bibliografia
-
Torben Morgensen: Basics of Compiler Design. 2010.
- Terence Parr: Language Implementation Patterns. 2010
- material on the e-learning website
Metodi didattici
Lezioni frontali, laboratorio.
Modalità di verifica e valutazione dell'apprendimento
Prova scritta e/o progetto.
Strumenti a supporto della didattica
Proiettore, lavagna, computer, laboratorio.
Link ad altre eventuali informazioni
https://www.unibo.it/sitoweb/cosimo.laneve/teachings
Orario di ricevimento
Consulta il sito web di Cosimo Laneve