facoltà di economia corso di laurea in economia informatica strumenti formali per l’analisi...
TRANSCRIPT
![Page 1: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/1.jpg)
Facoltà di Economia Corso di Laurea in Economia Informatica
Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori
Universtità degli Studi “G. D’Annunzio”Chieti – Pescara
Laureanda RelatoreCaterina Mandolini Stefano Bistarelli
Anno Accademico 2003-2004
![Page 2: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/2.jpg)
STRUMENTI FORMALI PER L’ANALISI LESSICALE-
SINTATTICA DEI COMPILATORI.
1) Compilatori
2) Analisi Lessicale – Sintattica
3) Strumenti Formali
![Page 3: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/3.jpg)
Il compilatore come traduttore da linguaggi di alto livello a linguaggi di basso livello
Tipicamente:
• Il programma sorgente è scritto in un linguaggio di alto livello.
• Il programma oggetto nel linguaggio macchina.
P1 equivalente a P2
P1
Programma
Sorgente
CompilatoreP2
Programma
Oggetto
![Page 4: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/4.jpg)
Linguaggi di Programmazione
Alto livello: Pascal, C, Java
X=Y+5Basso livello: Linguaggio macchina
001 0110010 0001
![Page 5: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/5.jpg)
Il Compilatore ci consente
di Sfruttare le Potenzialità della Macchina
(Velocità e Precisione nell’esecuzione delle istruzioni)
evitandoci l’Onere di imparare il Linguaggio Macchina
![Page 6: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/6.jpg)
Modello analisi - sintesi
Analisi lessicaleAnalisi sintatticaAnalisi semantica
Analisi
P.S. Analisi Sintesi P.O.Rappresentazione
Intermedia
![Page 7: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/7.jpg)
Il modulo dell’analisi: esempio
Vogliamo assegnare alla variabile C il numero 2.795. Supponiamo che l’istruzione di assegnamento sia :=
• C=2.795 …….Errore!!! Analizzatore Lessicale
• 2.795:=C …….Errore!!! Analizzatore sintattico
• C:=2.795 …….Errore!!! Analizzatore semantico
![Page 8: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/8.jpg)
Analizzatore Lessicale e Parser
Verifica della correttezza sintattica del programma
![Page 9: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/9.jpg)
Linguaggi formali
x y (f(x)<y)
Il linguaggio matematico è un linguaggio formale o informale?
• Conta il numero dei bit La lingua italiana è un linguaggio formale o
informale?
![Page 10: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/10.jpg)
Linguaggio Formale
• E’ un insieme costituito da un numero (finito o infinito) di frasi.
• Ogni frase è una sequenza finita di simboli.
H = {f1, f2, …, fn, …}
f1= , f2= , … , fn= n ,….
H è un linguaggio formale?
![Page 11: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/11.jpg)
Grammatiche Generative
<FRASE> <SOGGETTO> <PREDICATO> <COMPLEMENTO>
<SOGGETTO> Luca | Maria
<PREDICATO> guarda | chiama
<COMPLEMENTO> <ARTICOLO> <NOME>
<ARTICOLO> il
<NOME> cane
![Page 12: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/12.jpg)
Luca chiama il cane
1) <FRASE>
2) <SOGGETTO> <PREDICATO> <COMPLEMENTO>
3) Luca <PREDICATO> <COMPLEMENTO>
4) Luca chiama <COMPLEMENTO>
5) Luca chiama <ARTICOLO> <NOME>
6) Luca chiama il <NOME>
7) Luca chiama il cane
![Page 13: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/13.jpg)
Albero di derivazione
<FRASE>
<SOGGETTO> <PREDICATO>
Luca chiama
<COMPLEMENTO>
<NOME><ARTICOLO>
caneil
![Page 14: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/14.jpg)
Classificazione delle grammatiche alla Chomsky
I linguaggi regolari ed i linguaggi liberi
sono decidibili. Complessità lineare:
O(n3) e O(n)
Tipo 2: libere dal contesto
A
Tipo 0
Tipo 1: dipendenti dal contesto
A
Tipo 3: regolari
A aB | a
![Page 15: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/15.jpg)
Automa a Stati Finiti
Nastro di input
Controllo a stati finiti
![Page 16: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/16.jpg)
Nastro di input
Controllo a stati finiti Memoria
a pila
Automa a Pila
![Page 17: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/17.jpg)
STRUMENTI AUTOMATICI
• Analizzatore lessicale: LEX
• Analizzatore sintattico: YACC
(Yet Another Compiler Compiler)
![Page 18: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/18.jpg)
INTERAZIONE LEX – YACC
YACCP.S.
LEX…..
Token
Altro token
![Page 19: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/19.jpg)
Sintassi LEX
P1, P2, …, Pn
%%
P1 {Azione 1}
P2 {Azione 2}
...
Pn {Azione n}
![Page 20: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/20.jpg)
Sintassi YACC
% token T1, T2,…, Tn,
%%
A1: 1 {Azione semantica 1}
A2: 2 {Azione semantica 2}
...
An: n {Azione semantica n}
![Page 21: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi](https://reader034.vdocuments.pub/reader034/viewer/2022052522/5542eb73497959361e8db4ff/html5/thumbnails/21.jpg)
Programma YACC: esempio
% token NUMERO %%espr: espr ‘+’ espr {$$= $1 +
$3;}| espr ‘-’ espr {$$= $1 - $3;}| espr ‘*’ espr {$$= $1 * $3;}| espr ‘/’ espr {$$= $1 / $3;}| espr ‘-’ espr {$$= $1 - $3;}| ‘(’ espr ‘)’ {$$= $2}| NUMERO
Programma LEX
NUMERO [0-9]
%%
{NUMERO} {yylval=valore();
return (NUMERO);}