Far conoscere gli elementi di base della teoria della compilazione dei linguaggi di programmazione. Il corso presenta le diverse fasi di compilazione di un semplice linguaggio imperativo orientato agli oggetti. La teoria viene condotta in parallelo agli esperimenti su un compilatore di esempio.
* Introduzione al corso e alla tecnologia dei compilatori.
* Analisi lessicale.
* Analisi sintattica e classi di linguaggi.
* Sintassi astratta.
* Analisi semantica (type-checking).
* Codice intermedio Java bytecode.
* Generazione del codice intermedio.
* Generazione del codice macchina.
* Ottimizzazione del codice.
Il corso si svolge in 44 lezioni, due terzi delle quali frontali, e un terzo delle quali in laboratorio. Gran parte del materiale didattico verrà fornito dal docente sotto forma di dispense.
Autore | Titolo | Casa editrice | Anno | ISBN | Note |
Andrew W. Appel | Modern Compiler Implementation in Java | Cambridge University Press | 1999 | 0521583886 | Testo di consultazione sporadica. Consigliato solo per i primi tre capitoli. |
L'esame consiste in una prova scritta e in un progetto.
Nella prova scritta lo studente dovrà risolvere tre esercizi, che hanno lo scopo di verificare la preparazione dello studente sugli argomenti trattati a lezione. Tali esercizi possono anche richiedere l'applicazione di alcuni risultati teorici descritti a lezione. La prova scritta può essere valutata fino a 24 punti.
Il progetto consiste nella modifica o integrazione del compilatore descritto a lezione con nuovi costrutti linguistici o nuove tecniche di implementazione. Il progetto verrà svolto dagli studenti in gruppi di uno, due o tre persone. La sua realizzazione richiede la conoscenza della programmazione in Java. Il progetto può essere valutato fino a 10 punti. La consegna viene fatta via internet entro l'ultima sessione d'esame relativa al corso, con votazione massima discendente con l'allontanarsi dalla fine del corso.
******** CSS e script comuni siti DOL - frase 9957 ********p>