Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Ingegneria
INGEGNERIA INFORMATICA
Insegnamento
LINGUAGGI FORMALI E COMPILATORI
INP3050965, A.A. 2015/16

Informazioni valide per gli studenti immatricolati nell'A.A. 2014/15

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea magistrale in
INGEGNERIA INFORMATICA
IN0521, ordinamento 2009/10, A.A. 2015/16
N0
porta questa
pagina con te
Crediti formativi 6.0
Tipo di valutazione Voto
Denominazione inglese FORMAL LANGUAGES AND COMPILERS
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Sito E-Learning https://elearning.dei.unipd.it/course/view.php?idnumber=2015-IN0521-000ZZ-2014-INP3050965-N0
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA
Corso singolo È possibile iscriversi all'insegnamento come corso singolo
Corso a libera scelta È possibile utilizzare l'insegnamento come corso a libera scelta

Docenti
Responsabile GIORGIO SATTA ING-INF/05

Dettaglio crediti formativi
Tipologia Ambito Disciplinare Settore Scientifico-Disciplinare Crediti
CARATTERIZZANTE Ingegneria informatica ING-INF/05 6.0

Organizzazione dell'insegnamento
Periodo di erogazione Secondo semestre
Anno di corso II Anno
Modalità di erogazione frontale

Tipo ore Crediti Ore di
didattica
assistita
Ore Studio
Individuale
LEZIONE 6.0 48 102.0

Calendario
Inizio attività didattiche 01/03/2016
Fine attività didattiche 15/06/2016
Visualizza il calendario delle lezioni Lezioni 2019/20 Ord.2009

Commissioni d'esame
Commissione Dal Al Membri
3 A.A. 2016/2017 01/10/2016 15/03/2018 SATTA GIORGIO (Presidente)
PIZZI CINZIA (Membro Effettivo)
MORO MICHELE (Supplente)
2 A.A. 2015/2016 01/10/2015 15/03/2017 SATTA GIORGIO (Presidente)
PIZZI CINZIA (Membro Effettivo)
MORO MICHELE (Supplente)
1 A.A. 2014/2015 01/10/2014 15/03/2016 SATTA GIORGIO (Presidente)
MORO MICHELE (Membro Effettivo)
PIZZI CINZIA (Supplente)

Syllabus
Prerequisiti: Conoscenza generica dei linguaggi di programmazione, della teoria dei linguaggi formali e della teoria degli algoritmi e delle strutture dati.
Conoscenze e abilita' da acquisire: Il corso intende fornire agli studenti le nozioni necessarie per comprendere ed affrontare le problematiche relative alle diverse fasi della compilazione, con particolare attenzione all’analisi lessicale, sintattica e semantica.
Modalita' di esame: Prova scritta.
Criteri di valutazione: Verifica dell'apprendimento dei concetti di base della traduzione e dei più diffusi tool per la costruzione automatica di compilatori.
Contenuti: Introduzione
Linguaggi di programmazione e processori di linguaggi. Linguaggi macchina, linguaggi assembler ed evoluzione dei linguaggi di programmazione. Compilatori, interpreti e macchina virtuale. Struttura di un compilatore e fasi della compilazione. Front end e back end. Passate di un compilatore.

Analisi lessicale
Operazioni preliminari, token e lessemi. Espressioni regolari e definizioni regolari. Eliminazioni dell'ambiguita`. Automi a stati finiti deterministici e nondeterministici, loro implementazione e simulazione. Generazione automatica di un analizzatore lessicale: il programma Flex.

Analisi sintattica
Grammatiche context-free, alberi di derivazione e ambiguita`. Automi a pila deterministici e non deterministici. Errori sintattici e metodi di gestione degli errori. Parser discendenti o top-down; parser a discesa ricorsiva; parser LL(1). Eliminazione della ricorsione sinistra; fattorizzazione sinistra, insiemi First e Follow. Parser ascendenti o bottom-up, parser shift-reduce, parser LR(0), parser SLR, parser LR(1), parser LALR(1). Generazione automatica di parser: il programma Bison.

Analisi semantica
Semantica statica e dinamica. Grammatiche con attributi. Semantica guidata dalla sintassi. Albero sintattico decorato, calcolo degli attributi e grafo delle dipendenze. Grammatiche con S-attributi e grammatiche con L-attributi. Ordinamento topologico del grafo delle dipendenze. Type checking, equivalenza d tipi e type coercion. Tabella dei simboli.

Generazione del codice
Codice intermedio e codice a tre indirizzi. Strutture dati per l’implementazione del codice a tre indirizzi. Generazione del codice per i piu` frequenti costrutti di programmazione: definizioni, array, if, while. Esempi di ottimizzazione del codice indipendente dalla macchina.
Attivita' di apprendimento previste e metodologie di insegnamento: Lezioni frontali.
Eventuali indicazioni sui materiali di studio:
Testi di riferimento:
  • A. Aho, M. Lam, R. Sethi, J. Ullman, Compilatori, principi, tecniche e strumenti. --: Pearson, Addison Wesley, 2009. Cerca nel catalogo