Strumenti formali per l analisi lessicale sintattica dei compilatori
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Strumenti formali per l analisi lessicale sintattica dei compilatori

Universita’ degli Studi “G. D’Annunzio”Chieti – Pescara

Facolta’ di Economia - CLEI

Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori

Laureanda RelatoreCaterina MandoliniStefano Bistarelli

Anno Accademico 2003-2004


Strumenti formali per l analisi lessicale sintattica dei compilatori

Introduzione

1) Compilatori

2) Analisi Lessicale – Sintattica

3) Strumenti Formali


Strumenti formali per l analisi lessicale sintattica dei compilatori

P1

programma

sorgente

P2

programma

oggetto

compilatore

Il Compilatore come Traduttore

P1 equivalente a P2


Linguaggi di programmazione

Linguaggi di Programmazione

Alto livello: Pascal, C, Java

X=Y+5

Basso livello: linguaggio macchina

001 0110

010 0001


Modello analisi sintesi

Modello analisi - sintesi

Analisi

Sintesi

P.S.

R. I.

P.O.

ANALISI Analisi Lessicale Analisi Sintattica Analisi Semantica


Il modulo dell analisi

Il modulo dell’analisi

Vogliamo assegnare alla variabile C il numero 2.795. Supponiamo che l’istruzione corretta sia

C := 2.795

C=2.795 errore!!! (AnLex)

2.795:=C errore!!! (Parser)

C:=2.795 errore!!! (AnSem)


Linguaggi formali

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”


Linguaggi formali1

Linguaggi Formali

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?


Grammatiche generative

Grammatiche Generative

  • Parole

  • Categorie sintattiche

  • Regole di riscrittura

  • Categoria sintattica iniziale


Albero di derivazione

<FRASE>

<SOGGETTO>

<PREDICATO>

<COMPLEMENTO>

Pippo

mangia

<ARTICOLO>

<NOME>

il

fiore

Albero di Derivazione


Classificazione delle grammatiche alla chomsky

Tipo 0

 

Tipo 1 - Dipendenti dal Contesto

 A    

Tipo 2 - Libere dal Contesto

A 

Tipo 3 - Regolari

A aB | a

Classificazione delle Grammatiche alla Chomsky


Automa a stati finiti

Nastro di input

Controllo

a stati finiti

Automa a Stati Finiti


Strumenti formali per l analisi lessicale sintattica dei compilatori

Nastro di input

Controllo

a stati finiti

Memoria

a pila

Automa a Pila


Strumenti automatici

Strumenti Automatici

LEX

YACC

(Yet Another Compiler Compiler)


Interazione lex yacc

Token

LEX

YACC

P.S.

..

Altro token

Interazione LEX – YACC


Un minicompilatore

Un Minicompilatore

Programma LEX

NUMERO [0-9]

%%

{NUMERO} {yylval=valore();

return (NUMERO);}

Programma YACC

% token NUMERO

%%

e: e ‘+’ e

{$$= $1 + $3;}

e: ‘(’ e ‘)’

{$$= $2;}

e: NUMERO

{$$= yylval;}


2 5 7 diviene 14

2+(5+7) diviene 14

e

e

+

e

(

e

)

NUMERO

e

e

+

2

NUMERO

NUMERO

5

7


Conclusioni

Conclusioni

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.


Conclusioni1

Conclusioni

Perche’ i linguaggi di programmazione

sono linguaggi liberi?

Perche’ i linguaggi liberi costituiscono

un buon compromesso

tra potere espressivo ed efficienza.


Conclusioni2

Conclusioni

Da che cosa deriva la caratteristica

dell’efficienza?

Deriva dal fatto che il riconoscimento

dei linguaggi liberi puo’ essere effettuato

tramite l’automa riconoscitore.


Strumenti formali per l analisi lessicale sintattica dei compilatori

Conclusioni

Quanto costa, in termini di risorse,

implementare l’automa riconoscitore?

Il costo e’ basso utilizzando i tool.


Conclusioni3

Conclusioni

Realizzare un compilatore

e’ un gioco da ragazzi?

ASSOLUTAMENTE NO!


Ringraziamenti

Ringraziamenti


  • Login