81941 - COMPILATORI E INTERPRETI

Scheda insegnamento

  • Docente Cosimo Laneve

  • Crediti formativi 6

  • SSD INF/01

  • Modalità di erogazione In presenza (Convenzionale)

  • Lingua di insegnamento Italiano

Anno Accademico 2017/2018

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.

Programma/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

  • Grune-Jacobs: Parsing Techniques — A Practical Guide. 2008. Downloadable from https://dickgrune.com/Books/PTAPG_1st_Edition/
  • Gabbrielli-Martini: Linguaggi di Programmazione, Principi e Paradigmi, 2011
  • Terence Parr: Language Implementation Patterns. 2010
  • material on the e-learning website

Metodi didattici

Lezioni frontali, laboratorio.

Modalità di verifica 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