Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi...

21
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 Relatore Caterina Mandolini Stefano Bistarelli Anno Accademico 2003-2004

Transcript of Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi...

Page 1: Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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);}