LINGUAGGI E TRADUTTORI

ING-INF/05 - 9 CFU - 1° semestre

Docente titolare dell'insegnamento

VINCENZA CARCHIOLO


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


Altro materiale didattico

studium.unict.it



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


PROVE IN ITINERE

Prova in itinere costituita da due parti relative rispettivamente al modulo 1 e 2

La parte relativa al Modulo 1 contiene esercizi sui linguaggi formali

La perte relativa al Module 2 contiene quesiti a risposta apaerta sugli argomenti del modulo 2

Il superamento della prima parte relativa al Modulo 1 esonera dalla prova scritta il superamento della seconda parte relativa al modulo 2 esonera dalla parte di colloquio relativa al modulo 2


PROVE DI FINE CORSO

Esempi delle prove in itinere e della prova scritta di fine corso sorno disponibili su Studium


ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI

Disponibili su Studium




Apri in formato Pdf English version