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

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


  • 90 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


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


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

Alto livello: Pascal, C, Java

X=Y+5

Basso livello: linguaggio macchina

001 0110

010 0001


Modello analisi - sintesi

Analisi

Sintesi

P.S.

R. I.

P.O.

ANALISI Analisi Lessicale Analisi Sintattica Analisi Semantica


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

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 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

  • Parole

  • Categorie sintattiche

  • Regole di riscrittura

  • Categoria sintattica iniziale


<FRASE>

<SOGGETTO>

<PREDICATO>

<COMPLEMENTO>

Pippo

mangia

<ARTICOLO>

<NOME>

il

fiore

Albero di Derivazione


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


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

LEX

YACC

(Yet Another Compiler Compiler)


Token

LEX

YACC

P.S.

..

Altro token

Interazione LEX – YACC


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

e

e

+

e

(

e

)

NUMERO

e

e

+

2

NUMERO

NUMERO

5

7


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.


Conclusioni

Perche’ i linguaggi di programmazione

sono linguaggi liberi?

Perche’ i linguaggi liberi costituiscono

un buon compromesso

tra potere espressivo ed efficienza.


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.


Conclusioni

Realizzare un compilatore

e’ un gioco da ragazzi?

ASSOLUTAMENTE NO!


Ringraziamenti


  • Login