Programma del
Corso
Obiettivi
Conoscere e affrontare i problemi tipici
della progettazione e realizzazione di traduttori di linguaggi. Acquisire competenza
sulle tecniche di formalizzazione della sintassi e delle piĆ¹ significative
tecniche di analisi e riconoscimento. Acquisire competenza sulle tecniche di
analisi semantica e sulle grammatiche attributate per la realizzazione di
sistemi di intepretazione e di traduzione guidati dalla sintassi.
Descrizione
Nella prima parte, si introducono le principali tecniche
per la costruzione di analizzatori lessicali, analizzatori sintattici e per la loro
derivazione formale dalla definizione del lessico e della sintassi. Si mostra
come queste tecniche possano essere impiegate in contesti molto diversi tra
loro, quali routines di interfaccia e di gestione di I/O, linguaggi per pattern
matching e pattern recognition, text editors. Nella seconda parte, si introducono tecniche basate su
grammatiche ad attributi e su syntax-directed definitions per costruire
analizzatori semantici e traduttori guidati dalla sintassi. Si mostra poi, come
queste tecniche possano essere utilizzate in cotesti differenti e per costruire
strumenti molto diversi tra loro quali riconoscitori di linguaggi non
context-free, editor guidati dalla sintassi, routines per la composizione grafica di testi e
immagini.
Programma
- Linguaggi e macchine astratte: interpretazione, compilazione,
supporto a tempo di esecuzione.
- Lessico: Automi a stati finiti, espressioni regolari.
- Analisi lessicale, costruzione di ricoscitori lineari e di
generatori.
- Sintassi: Grammatiche libere e aspetti sintattici dei linguaggi di
programmazione.
- Tecniche di analisi sintattica LL e LR.
- Costruzione di ricoscitori lineari e di generatori di analizzatori
sintattici.
- Semantica: Grammatiche ad attributi e tecniche di costruzione
oblivious.
- Analisi statica e controllo dei tipi al tempo di compilazione.
- Generazione di codice e Forme intermedie.
- Traduzione guidata dalla sintassi.
- Cenno all'ottimizzazione del codice e alla gestione degli errori.
Riferimenti
- Aho A.V., Sethi R. , Ullman J.D., Compilers.
Principles, Techniques and Tools, Addison
Wesley, Reading, Mass., 1986.
Testi di consultazione
- Aho A.V., M.S. Lam, Sethi R. , Ullman J.D., Compilers.
Principles, Techniques and Tools - Second Edition, Pearson Addison
Wesley, 2007
- D.
Grune, H.E. Bal, C.J.H. Jacobs, and K.G. Langendoen, Modern
Compiler Design,
John Wiley & Sons, 2001
- Wilhelm R. and Maurer D., Compiler
Design, Addison-Wesley, 1996.
- Muchnick S.S., Advanced Compiler
Design and Implementation, Morgan Kaufmann,
1997.
- Sippu S. and Soisalon-Sininen E., Parsing
Theory Volume II: LR(K) and LL(K) parsing, Springer,
1990.