1 / 23

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

cicily
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Introduzione 1) Compilatori 2) Analisi Lessicale – Sintattica 3) Strumenti Formali

  3. P1 programma sorgente P2 programma oggetto compilatore Il Compilatore come Traduttore P1 equivalente a P2

  4. Linguaggi di Programmazione Alto livello: Pascal, C, Java X=Y+5 Basso livello: linguaggio macchina 001 0110 010 0001

  5. Modello analisi - sintesi Analisi Sintesi P.S. R. I. P.O. ANALISI Analisi Lessicale Analisi Sintattica Analisi Semantica

  6. 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)

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

  8. 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?

  9. Grammatiche Generative • Parole • Categorie sintattiche • Regole di riscrittura • Categoria sintattica iniziale

  10. <FRASE> <SOGGETTO> <PREDICATO> <COMPLEMENTO> Pippo mangia <ARTICOLO> <NOME> il fiore Albero di Derivazione

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

  12. Nastro di input  Controllo a stati finiti Automa a Stati Finiti

  13. Nastro di input  Controllo a stati finiti Memoria a pila Automa a Pila

  14. Strumenti Automatici LEX YACC (Yet Another Compiler Compiler)

  15. Token LEX YACC P.S. .. Altro token Interazione LEX – YACC

  16. 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;}

  17. 2+(5+7) diviene 14 e e + e ( e ) NUMERO e e + 2 NUMERO NUMERO 5 7

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

  19. Conclusioni Perche’ i linguaggi di programmazione sono linguaggi liberi? Perche’ i linguaggi liberi costituiscono un buon compromesso tra potere espressivo ed efficienza.

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

  21. Conclusioni Quanto costa, in termini di risorse, implementare l’automa riconoscitore? Il costo e’ basso utilizzando i tool.

  22. Conclusioni Realizzare un compilatore e’ un gioco da ragazzi? ASSOLUTAMENTE NO!

  23. Ringraziamenti

More Related