Facoltà di Economia Corso di Laurea in Economia Informatica

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

description

Universtità degli Studi “G. D’Annunzio” Chieti – Pescara. Facoltà di Economia Corso di Laurea in Economia Informatica. Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori. LaureandaRelatore Caterina MandoliniStefano Bistarelli. Anno Accademico 2003-2004. - PowerPoint PPT Presentation

Transcript of Facoltà di Economia Corso di Laurea in Economia Informatica

Page 1: Facoltà di Economia  Corso di Laurea in Economia Informatica

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.

1) Compilatori

2) Analisi Lessicale – Sintattica

3) Strumenti Formali

Page 3: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

P1ProgrammaSorgente

CompilatoreP2ProgrammaOggetto

Page 4: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

Il Compilatore ci consentedi 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

Modello analisi - sintesi

Analisi lessicaleAnalisi sintatticaAnalisi semantica

Analisi

P.S. Analisi Sintesi P.O.RappresentazioneIntermedia

Page 7: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

Analizzatore Lessicale e Parser

Verifica della correttezza sintattica del programma

Page 9: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

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

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

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

Albero di derivazione

<FRASE>

<SOGGETTO> <PREDICATO>

Luca chiama

<COMPLEMENTO>

<NOME><ARTICOLO>

caneil

Page 14: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

Automa a Stati Finiti

Nastro di input

Controllo a stati finiti

Page 16: Facoltà di Economia  Corso di Laurea in Economia Informatica

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 AUTOMATICI

• Analizzatore lessicale: LEX• Analizzatore sintattico: YACC(Yet Another Compiler Compiler)

Page 18: Facoltà di Economia  Corso di Laurea in Economia Informatica

INTERAZIONE LEX – YACC

YACCP.S.

LEX…..

Token

Altro token

Page 19: Facoltà di Economia  Corso di Laurea in Economia Informatica

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

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

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 LEXNUMERO [0-9]%%{NUMERO}

{yylval=valore(); return (NUMERO);}