Strumenti formali per l analisi lessicale sintattica dei compilatori
Download
1 / 23

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


  • 106 Views
  • Uploaded on

Universita ’ degli Studi “ G. D ’ Annunzio ” Chieti – Pescara. Facolta ’ di Economia - CLEI. Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori. Laureanda Relatore Caterina Mandolini Stefano Bistarelli. Anno Accademico 2003-2004. Introduzione.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Strumenti Formali per l ’ Analisi Lessicale – Sintattica dei Compilatori' - cicily


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 Mandolini Stefano Bistarelli

Anno Accademico 2003-2004


Introduzione

1) Compilatori

2) Analisi Lessicale – Sintattica

3) Strumenti Formali


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


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.


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!



ad