Il corso ha lo scopo di illustrare i principali metodi e strumenti
teorici alla base della costruzione di compilatori. Questo corso ha come
prerequisito il corso di Informatica Teorica.
Il corso di Linguaggi di Programmazione attribuisce 12 crediti formativi ed
ha durata di 80 ore, di cui 55 di lezioni frontali e 25 di esercitazione.
L'esame consiste in una prova scritta ed un progetto di gruppo (max 3 studenti).
Il progetto consiste nel realizzare un front-end di un compilatore per un
linguaggio di programmazione (da concordare col docente) che produce
codice intermedio in SPIM.
Fondamenti di Compilazione.
Analisi lessicale: automi a stati finiti, espressioni regolari, Flex
Analisi sintattica: parsing LL, parsing LR, automi a pila, Bison
Analisi semantica: Grammatiche con attributi, attributi ereditati e sintetizzati, alberi sintattici astratti, dags, tipi, tabella dei simboli, type-checking, equivalenza di tipi, coercions e overloadings, type-checking di funzioni polimorfe, unificazione
Ambienti al tempo di esecuzione: struttura della memoria, pila e heap, accesso ai dati globali, catene statiche e dinamiche, i display, il passaggio dei parametri, tecniche di gestione dello heap, frammentazione, garbage-collection, tecnica di reference-count e di marking
Traduzione in codice intermedio: codice a tre indirizzi, traduzione dei
costrutti sintattici, backpatching
Lezione
1 ;
Lezione
2 ;
Lezione
3 ;
Lezione
4 ;
Lezione
5 ;
Lezione
6 ;
Lezione
7 .
Lezione
8 .
|
Modern
Compiler Implementation in C Andrew W. Appel, Maia Ginsburg Hardcover - 560 pages (January 1998) Cambridge University Press ISBN: 052158390X |
|
Compilers:
Principles, Techniques, and Tools Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman Addison-Wesley Pub Co ISBN: 0201100886 |