LINGUAGGI E TRADUTTORI

Anno accademico 2016/2017 - 2° anno
Docente: Vincenza CARCHIOLO
Crediti: 9
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Organizzazione didattica: 225 ore d'impegno totale, 176 di studio individuale, 49 di lezione frontale
Semestre:
ENGLISH VERSION

Obiettivi formativi

Obiettivo del corso è la comprensione da parte dello studente delle principali tecniche per la progettazione di un compilatore, la conoscenza delle problematiche relative all’analisi dei linguaggi nonche la conoscenza delle principali tecniche di sintesi e ottimizzazione, la capacità di utilizzo di un linguaggio di programmazione funzionale orientate agli oggetti.

In dettaglio lo studente dovrebbe acquisire la capacità di utilizzare delle grammatiche formali per specificare la sintassi e la semantica dei linguaggi di programmazione. Le conoscenze acquisite sono utilizzate per la realizzazione delle principali fasi di compilazione, analisi lessicale, parsing, analisi semantica, generazione di codice e ottimizazione. Lo studente deve saper utilizzare strumenti di costruzione compilatore, come i generatori di scanner e parser, deve essere in grado di manipolare grammatiche LL (1), LR (1), e LALR (1) e avere familiarità con le principali tecniche di ottimizzazione e deve essere in grado di costruire un compilatore per un (semplice linguaggio di programmazione). Lo studente svilupperà la capacità di comprendere, ragionare e valutare alcune delle nuove tecniche di programmazione del linguaggio Scala.


Prerequisiti richiesti

Conoscenza delle architetture dei calcolatori base e le relative problematiche, i linguaggi assembly.


Frequenza lezioni

La frequenza non è obbligatoria. La frequenza è obbligatoria per la partecipazione alle prove intermedie


Contenuti del corso

Il corso è articolato in quattro moduli.

Modulo 1: Linguaggi formali e loro utilizzo per la specifica e la traduzione dei linguaggi di programmazione

Modulo 2; Front end del compilatore

Modulo 3: back end del compilatore

Modulo 4: programmazione funzionale orientata agli oggetti: il linguaggio SCALA


Testi di riferimento

[T1] Aho A.V.; Lam M.S.; Sethi R.; Ullman J.D., COMPILATORI PRINCIPI, TECNICHE E STRUMENTI, Pearson Education Italia

[T2] Motwani Rajeev; Ullman Jeffrey D.; Hopcroft John E: AUTOMI, LINGUAGGI E CALCOLABILITA', PEARSON EDUCATION ITALIA

[T3] Martin Odersky, Lex Spoon, and Bill Venners: Programming in Scala, Third Edition, Artima

[T4] Materiale fornito del docente on line



Programmazione del corso

 *ArgomentiRiferimenti testi
1*STRUTTURA E FUNZIONALITA' DI UN COMPILATORE Linguaggi di programmazione e compilatori - Struttura di un compilatore - Fasi di un processo di compilazione - Classificazione dei compilatori - Applicazioni della tecnologia dei compilatori[T1] CAP 1 da 1.1 a 1.5 
2 STRUTTURA E FUNZIONALITA' DI UN COMPILATORE Linguaggi di programmazione e compilatori - Struttura di un compilatore - Fasi di un processo di compilazione - Classificazione dei compilatori - Applicazioni della tecnologia dei compilatori[T1] CAP 1 §1.6 CAP2 
3*INTRODUZIONE AI LINGUAGGI FORMALI[T2] Cap 1 § 1.5 e 1.6 
4 INTRODUZIONE AI LINGUAGGI FORMALI[T2] Cap 8 § 8.2 
5*LINGUAGGI REGOLARI E AUTOMI A STATI FINITI[T1] § 3.3 DA § 3.5 a § 3.9 
6 LINGUAGGI REGOLARI E AUTOMI A STATI FINITI[T2] Capitolo 2 Capitolo 3 e Capitolo 4 
7 GENERATORI DI ANALIZZATORI LESSICALI[T2[ § 3.5 [T4] manuale FLEX JLEX e AntLR 
8*GRAMMATICHE LIBERE DAL CONTESTO[T1] § 4.2 § 4.3 
9*PARSING TOP-DOWN[T1] § 4.4 (escluso 4.4.5) 
10*PARSING BOTTOM_UP[T1] § 4.4 § 4.6 § 4.7 § 4.8 (escluso 4.8.3) 
11 GESTIONE DEGLI ERRORI SINTATTICI[T1] § 4.1,3 § 4.1.4 § 4.1.5 § 4.4.5 § 4.8.3 
12*GRAMMATICHE AD ATTRIBUTI E TRADUZIONE GUIDATA DALLA SINTASSI[T1] CAP 5 
13 GENERATORI DI ANALIZZATORI SINTATTICI[T1] § 2.7 [T4] MANUALI Yacc Jcup Antlr 
14 TABELLA DEI SIMBOLI[T1] § 4.9 
15*GENERAZIONE CODICE INTERMEDIO[T1[ CAP. 6 
16*MODELLO A RUN TIME[T1] Cap 7 fino a 7.7.4 
17*GENERAZIONE DEL CODICE E OTTIMIZZAZIONE[T1[ CAP 8 (DA 8.1 A 8.5 e 8.7) 
18*ANALISI CONTROL FLOW[T1[ 9.6 
19*ANALISI DATA FLOW[T1] 9.1, 9.2, 9.5 
20*GENERAZIONE DEL CODICE[T1] 8.10, CAP 10 FINO A 10.5.3 
21 ANALISI INTERPROCEDURALE[T1] 12.2 
22*SINTASSI SCALA: Classes and Objects, Basic Types and Operations, Functional Objects Built-in Control Structures, Functions and Closures[T1] CAP1, 2, 3, 4,5,6,7 e 8 
23*Astrazione, Ereditarieta e gerarchia delle classi[T3] CAP da 9 a 13 
24*Liste[T3] cap 16 
25 Pattern Maching[T3] cap 15 
26 Attori e concorrenza[T3] cap 30 
27 GUI[T3] cap 32 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

La prova d'esame è articolata nel seguente modo

30% Prova scritta (module 1)

55% Orale (modulo 2, 3,4)

15% Progetto opzionale


Esempi di domande e/o esercizi frequenti

Disponibili su Studium