"Linguaggi di Programmazione e Compilatori" (A.A. 2015-16 e precedenti)
Sillabo:
Elementi di teoria di linguaggi formali. Introduzione ai
compilatori: il modello analisi-sintesi, fasi della
compilazione, interpreti.
Architettura e ruolo dell'analizzatore lessicale:
tokens-patterns-lessemi, buffering dell'input,
algoritmo di Thompson.
LEX: architettura software e sintassi.
Analisi sintattica: parsing top-down, parsing bottom-up.
Parsing predittivo non ricorsivo.
Parsing LR: tecniche SLR, LALR, LR canonica.
Gerarchia di grammatiche LR e gestione di grammatiche ambigue.
YACC: architettura software e sintassi.
Traduzione guidata dalla sintassi. Definizioni dirette dalla
sintassi: attributi ereditati e sintetizzati, definizioni
con S-attributi, definizioni con L-attributi.
Schemi di traslazione. Analisi semantica e type checking.
Generazione di codice intermedio. Three-address code: sintassi
ed esempi di generazione.
Riferimenti Bibliografici:
- Aho, Sethi, Ullman,
"Compilers, principles, techniques and tools"
Addison-Wesley, Reading, Mass
Link utili:
The Lex Yacc page
Materiale Didattico:
Dispensa1
Dispensa2
Dispensa3
Dispensa4
Dispensa5
Dispensa6
DispensaLEX
DispensaYACC