strumenti formali per l ’ analisi lessicale – sintattica dei compilatori
DESCRIPTION
Universita ’ degli Studi “ G. D ’ Annunzio ” Chieti – Pescara. Facolta ’ di Economia - CLEI. Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori. Laureanda Relatore Caterina MandoliniStefano Bistarelli. Anno Accademico 2003-2004. Introduzione. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/1.jpg)
Strumenti Formali per l’Analisi Lessicale – Sintattica dei
Compilatori
Laureanda RelatoreCaterina Mandolini Stefano Bistarelli
Anno Accademico 2003-2004
Facolta’ di Economia - CLEI
Universita’ degli Studi “G. D’Annunzio”Chieti – Pescara
![Page 2: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/2.jpg)
Introduzione
1) Compilatori
2) Analisi Lessicale – Sintattica
3) Strumenti Formali
![Page 3: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/3.jpg)
Il Compilatore come Traduttore
P1 equivalente a P2
P1
programmasorgente
compilatore
P2
programmaoggetto
![Page 4: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/4.jpg)
Linguaggi di Programmazione
Alto livello: Pascal, C, Java
X=Y+5
Basso livello: linguaggio macchina
001 0110010 0001
![Page 5: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/5.jpg)
Modello analisi - sintesi
P.S. Analisi Sintesi P.O.R. I.
ANALISI
Analisi Lessicale Analisi Sintattica Analisi Semantica
![Page 6: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/6.jpg)
Il modulo dell’analisi
C=2.795 errore!!! (AnLex)
2.795:=C errore!!! (Parser)
C:=2.795 errore!!! (AnSem)
Vogliamo assegnare alla variabile C il numero 2.795. Supponiamo che l’istruzione corretta sia
C := 2.795
![Page 7: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/7.jpg)
Linguaggi Formali
Il linguaggio matematico e’ un linguaggio formale o informale?
x y (f(x)<y)
La lingua italiana e’ un linguaggio formale o informale?
“Conta il numero dei bit”
![Page 8: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/8.jpg)
E’ un insieme costituito da un numero (finito o infinito) di frasi.
Ogni frase e’ una sequenza finita di simboli.
H = {f1, f2, …, fn, …}
f1= , f2= , … , fn= n , …
H e’ un linguaggio formale?
Linguaggi Formali
![Page 9: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/9.jpg)
Grammatiche Generative
• Parole
• Categorie sintattiche
• Regole di riscrittura
• Categoria sintattica iniziale
![Page 10: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/10.jpg)
Albero di Derivazione
<FRASE>
<SOGGETTO> <PREDICATO>
Pippo mangia
<COMPLEMENTO>
<NOME><ARTICOLO>
fioreil
![Page 11: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/11.jpg)
Classificazione delle Grammatiche alla Chomsky
Tipo 2 - Libere dal ContestoA
Tipo 0
Tipo 1 - Dipendenti dal Contesto A
Tipo 3 - RegolariA aB | a
![Page 12: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/12.jpg)
Automa a Stati Finiti
Nastro di input
Controlloa stati finiti
![Page 13: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/13.jpg)
Nastro di input
Controllo
a stati finiti
Memoria a pila
Automa a Pila
![Page 14: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/14.jpg)
Strumenti Automatici
LEX
YACC(Yet Another Compiler Compiler)
![Page 15: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/15.jpg)
Interazione LEX – YACC
YACCP.S.
LEX ..
Token
Altro token
![Page 16: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/16.jpg)
Un Minicompilatore
Programma YACC
% token NUMERO
%%
e: e ‘+’ e {$$= $1 + $3;}
e: ‘(’ e ‘)’{$$= $2;}
e: NUMERO{$$= yylval;}
Programma LEX
NUMERO [0-9]
%%
{NUMERO} {yylval=valore();
return (NUMERO);}
![Page 17: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/17.jpg)
e
e +
2e
e
e+
75
)e(
2+(5+7) diviene 14
NUMERO
NUMERO NUMERO
![Page 18: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/18.jpg)
Un programma C ha tante parentesi { quante }.Un programma Pascal ha tanti BEGIN quanti END.
Da che cosa deriva questa “somiglianza”?
Deriva dal fatto che sono entrambi linguaggi liberi.
Conclusioni
![Page 19: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/19.jpg)
Conclusioni
Perche’ i linguaggi di programmazione sono linguaggi liberi?
Perche’ i linguaggi liberi costituiscono un buon compromesso
tra potere espressivo ed efficienza.
![Page 20: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/20.jpg)
Conclusioni
Deriva dal fatto che il riconoscimento dei linguaggi liberi puo’ essere effettuato
tramite l’automa riconoscitore.
Da che cosa deriva la caratteristica dell’efficienza?
![Page 21: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/21.jpg)
Conclusioni
Il costo e’ basso utilizzando i tool.
Quanto costa, in termini di risorse, implementare l’automa riconoscitore?
![Page 22: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/22.jpg)
Conclusioni
Realizzare un compilatore e’ un gioco da ragazzi?
ASSOLUTAMENTE NO!
![Page 23: Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori](https://reader035.vdocuments.pub/reader035/viewer/2022062217/5681527d550346895dc0a952/html5/thumbnails/23.jpg)
Ringraziamenti