elenco    
        corso    

Compilatori

Codice: AA026Crediti: 6Semestre: 2Sigla: COP 
 
Settore disciplinare: INF/01 - Informatica

Docente

Marco Bellia   bellia@di.unipi.it  Stanza 330  Tel. 0502212781

Ultima versione disponibile: programma da confermare per l’a.a. 2008/2009

Prerequisiti

Programmazione di base, e nozioni di base dei linguaggi di programmazione: Sintassi, Semantica.

Obiettivi di apprendimento

Introdurre le principali problematiche inerenti la realizzazione di traduttori e interpreti per linguaggi di programmazione. Apprendere le tecniche di analisi sintattica e di analisi statica. Introdurre le tecniche e gli strumenti per la traduzione, generazione e interpretazione di codice.

Descrizione

Il corso considera le principali problematiche che si incontrano nella costruzione di interpreti e di traduttori per linguaggi. A partire da una formalizzazione di linguaggio consideriamo le strutture del lessico, della sintassi, della semantica e parallelamente introduciamo tecniche per definire, analizzare e costruire strumenti adatti ad operare con tali strutture, quali scanners, parser lineari ad una passata, generatori di codice.

Programma

Linguaggi: sintassi, semantica, esecutore, funzione semantica, interprete e traduttore.

Compilatore:le principali fasi, compilazione a una passata, front-end e back-end.

Lessico: linguaggi regolari, analisi lessicale, automi a stati finiti e scanners. Lex

Sintassi: Linguaggi context-free. Tecniche di analisi sintattica: forme sentenziali, derivazioni leftmost, rightmost, alberi di d.s., ambiguità. Tecniche di parsing: top-down e parser LL, bottom-up e parser SLR, LALR e LR. YACC

Grammatiche ad attributi: attributi, a. ereditati, a. sintetizzati, grammatiche s-attributate e l-attributate, analizzatori discendenti e analizzatori ascendenti. Valutazione bottom-up di attributi ereditati. Analisi di definizioni syntax-directed.

Analisi statica: proprietà statiche di programmi e analisi dei tipi

Generazione di codice intermedio: linguaggi interemedi, Tecniche di generazione per attributi e per effetti laterali. Traduzioni di espressioni senza effetti laterali e invarianti di traduzione. Traduzioni di comandi e invarianti di raduzione. Trasferimento di controllo, salti in avanti e backpatching.

Ore lezione: 34Ore esercitazione: 20   

Bibliografia

testo di base:
Aho,A.V., Sethi, R. and J.D., Ullman, COMPILERS: Principles, Techniques, and Tools. Addison-Wesley, 1988. - primi otto capitoli (pp.1-508)

testi di consultazione:
Hopcroft, J.E., Motwani, R. and J.D. Ullman, Automi, Linguaggi e Calcolabilità. Addison-Wesley, Pearson Education Italia srl., 2003
Crespi Reghizzi, S., Linguaggi Formali e Compilazione. Pitagora Editrice Bologna, 2006.

Modalità di esame

prova scritta e discussione orale

Ulteriore pagina web del corso: http://www.di.unipi.it/~bellia


home


email