LINGUAGGI E TRADUTTORI
Anno accademico 2016/2017 - 2° annoCrediti: 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: 1°
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
* | Argomenti | Riferimenti 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 |
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