elenco    
        corso    

Compilatori

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

Docente

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

Prerequisiti

Programmazione e Linguaggi di programmazione

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.

English Description

The course considers the main problems we encounter in the construction of language translators and interpreters. Starting from a formal definition of the language, we consider first, the techniques for the definition and analyses of lexicon, syntax, and the construction of scanners and parsers. In the last part, we introduce attribute grammars for the construction of language static analyzers and for syntax-directed translators into intermediate code.

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.

     

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)

testo di consultazione: Hopcroft, J.E., Motwani, R. and J.D. Ullman, Automi, Linguaggi e Calcolabilitą. Addison-Wesley, Pearson Education Italia srl., 2003

Modalità di esame

Scritto e orale

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


home


email