Corso di: Linguaggi e Ambienti di Programmazione (CFU
6)
Laurea Triennale in Informatica:
percorso Sistemi e
Reti
Anno accademico: 2006-2007
INDICE
Obiettivi del corso
Scopo
del corso è introdurre la teoria dei
linguaggi formali e illustrarne l'applicazione nella traduzione dei
linguaggi
di programmazione.
Prerequisiti
Si presuppone che lo studente conosca i concetti base dell'informatica
e abbia un po' di esperienza di programmazione.
Eventuali corsi propedeutici: Programmazione I e II
Modalità d'esame
L'esame consiste in una prova scritta.
Libri di testo
- [1] "Linguaggi Formali e Compilazione", Stefano
Crespi Reghizzi, Pitagora Editrice Bologna, 2006.
- [2] "Compilers", Alfred V. Aho,
Ravi
Sethi, Jeffrey D. Ullman, Addison Wesley, 1986.
Programma del corso
DEFINIZIONE SINTATTICA DEI LINGUAGGI
(cap.2 e 3 di [1], tranne 2.7.3 e 2.7.4)
- Teoria dei linguaggi formali: alfabeto e linguaggio, operazioni
sulle stringhe,
operazioni sui linguaggi.
- Espressioni e linguaggi regolari: definizione di espressione
regolare, derivazioni e linguaggio denotato.
- Le grammatiche generative libere dal contesto: Sintassi,
derivazioni e linguaggio generato. Grammatiche ridotte, ricorsione e
infinitezza del linguaggio. Alberi sintattici e derivazioni canoniche.
Ambiguità ed equivalenza.
Forme normali delle grammatiche.
Eliminazione della ricorsione sinistra diretta.
- Dalle espressioni regolari alle grammatiche libere che generano
il linguaggio
denotato.
Grammatiche lineari.
RICONOSCIMENTO DELLE FRASI: MODELLI FINITI
(cap. 3 di [1] , tranne 3.8.2 e 3.8.3)
- Automa finito deterministico.
Automa finito non deterministico.
Eliminazione del non determinismo.
Automi finiti e grammatiche lineari.
- Automi finiti ed espressioni regolari.
Automi per il riconoscimento dei linguaggi complemento e intersezione.
- Automi push-down deterministici e non.
Riconoscimento per stato finale e riconoscimento per stack vuoto.
- Grammatiche libere e riconoscitori predittivi.
ANALISI SINTATTICA DISCENDENTE DETERMINISTICA
(cap.4, $4.4 di [2] , cap.4, $ 4.4.1 e 4.4.2 di [1])
- Grammatiche LL(1).
Definizione e calcolo degli insiemi degli inizi e dei seguiti.
- Insiemi guida delle produzioni.
- Parser a discesa ricorsiva.
TRADUZIONE SINTATTICA
(Cap. 5, $5.1, 5.2, 5.3, 5.4, 5.5 di [2])
- Definizioni guidate dalla sintassi e schemi di traduzione.
- Grammatiche L-attribuite.
- Eliminazione della ricorsione sinistra in grammatiche ad
attributi.
- Traduzione a discesa ricorsiva per grammatiche L-attribuite.
Documentazione:
Materiale di complemento alle lezioni
- Introduzione
- Algoritmo
per l'individuazione degli stati distinguibili in un automa finito
deterministico
- Grammatiche context-free e
automi push-down
- Insiemi guida
- Analisi sintattica
- Traduzione
- Esempio: espressioni aritmetiche
Esercitazioni
- Esercitazione I
- Esercitazione II
- Esercitazione III
- Esercitazione IV
- Prova d'esame (fac simile)
Testi d'esame
|