La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Studente: Veronica Conti Docente: Enrico Denti ViBiTech Linguaggio per la gestione di una videoteca e biblioteca domestica Progetto per lesame di Linguaggi.

Presentazioni simili


Presentazione sul tema: "Studente: Veronica Conti Docente: Enrico Denti ViBiTech Linguaggio per la gestione di una videoteca e biblioteca domestica Progetto per lesame di Linguaggi."— Transcript della presentazione:

1 Studente: Veronica Conti Docente: Enrico Denti ViBiTech Linguaggio per la gestione di una videoteca e biblioteca domestica Progetto per lesame di Linguaggi e Modelli Computazionali L-S Anno Accademico 2008/2009 Università degli Studi di Bologna Facoltà di Ingegneria

2 Obiettivi del progetto Progettare un linguaggio che permetta di gestire un archivio di libri e film Realizzare un interprete per questo linguaggio che controlli gli inserimenti dell utente e gestisca la persistenza dei dati immessi Realizzare una visualizzazione a tabelle dei dati persistenti presenti gestiti dall ' applicazione 21/06/2010 ViBiTech 2

3 Linguaggio: esempio Esempio di inserimento di un nuovo libro 21/06/2010 ViBiTech 3 inserisci libro { TITOLO "Yoga per negati"; AUTORE "Georg Feuerstein, Larry Payne"; EDITORE "Mondadori"; GENERE "sportivo"; COLLANA "Oscar manuali"; ANNO 2008; NRPAG 372; TRAMA "dalle posizioni allalimentazione e molto altro"; COSTO ; PROVENIENZA comprato da: NOME "Veronica"; COGNOME "Conti"; NRTEL ; il: 22/02/2010; }

4 Grammatica – NON TERMINALI 1 Scopo Scopo : punto di partenza per ogni interazione col sistema Scelta dell operazione eseguire 21/06/2010 ViBiTech 4 ::= ::= | | | | ::= inserisci ( | ) ::= apriScheda ( | ) ::= aggiorna ( | ) ::= prestito ( | ) a il ::= rimuovi ( | | )

5 Grammatica – NON TERMINALI 2 Inserimento di una nuova scheda 21/06/2010 ViBiTech 5 ::= inserisci ( | ) ::= libro TITOLO AUTORE EDITORE GENERE ::= film TITOLO REGISTA DURATA ( \' | min ) (. )? GENERE Campi che qualif icano una nuova scheda libro Campi che qualif icano una nuova scheda film

6 Grammatica – NON TERMINALI 3 Apertura di una scheda esistente Produzioni per il ritrovamento di una scheda in base al titolo 21/06/2010 ViBiTech 6 ::= apriScheda ( | ) ::= libro TITOLO ::= film TITOLO

7 Grammatica – NON TERMINALI 4 Aggiornamento dei campi facoltativi 21/06/2010 ViBiTech 7 ::= aggiorna ( | ) ::= ( ATTORI ( )? )? ( ANNO )? ( PRODUZIONE )? ( TRAMA ( )+ )? ( COPERTINA )? ( GIUDIZIO )? ( )? ::= ( COLLANA )? ( ANNO )? ( NRPAG )? ( ISBN )? ( TRAMA ( )+ )? ( COPERTINA )? ( COSTO ( euro | € | \u20ac )? )? ( GIUDIZIO )? ( PROVENIENZA )? ::= ( regalato | comprato ) da il Possibilità di associ are il titolo di un libro al film

8 Grammatica – NON TERMINALI 5 Gestione dei prestiti e della rimozione 21/06/2010 ViBiTech 8 ::= prestito ( | ) a il ::= rimuovi ( | | ) ::= prestito ( | ) ::= NOME COGNOME ( NRTEL ( )+ )? ::= Campo facoltat ivo : viene usato anche nei campi facoltat ivi di ::= ( regalato | comprato ) da il

9 Grammatica – TOKEN Parole chiave del linguaggio : 21/06/2010 ViBiTech 9 "-" "-" "-" "-" > <#PERCORSOFILE: (["a"-"z"] ":\\" | ["A"-"Z"] ":\\" | "..\\" | ".\\")? ( "\\")* | ("/" | "../" | "./")? ( "/")*> > "." ("gif" | "GIF" | "jpg" | "JPG" | "png" | "PNG")> ( )* "\""> ("." | ",") > )*> Per delimit are blocchi logici Per la definizi one di stringhe Per descrivere l URL di un immagine di copertina Per la definizi one di numeri

10 Considerazioni su grammatica & linguaggio 1 La grammatica presenta un solo simbolo non terminale in tutte le parti sinistre delle produzioni : Aα con α(VTVN)*, A VN Secondo la classificazione di Chomsky è una grammatica context - free ( tipo 2) Non ha produzioni regolari Alcune produzioni prevedono parti opzionali e possono produrre ε - rules : Possibilità di eliminazione della stringa vuota tramite tecniche di riscrittura 21/06/2010 ViBiTech 10 ::= ( COLLANA )? ( ANNO )? ( NRPAG )? ( ISBN )? ( TRAMA ( )+ )? ( COPERTINA )? ( COSTO ( euro | € | \u20ac )? )? ( GIUDIZIO )? ( PROVENIENZA )?

11 Considerazioni su grammatica & linguaggio 2 Se la grammatica fosse LL (1) sarebbe sufficiente un solo simbolo per scegliere la produzione da applicare… La presenza di ε - rules fa venire a meno la condizione sufficiente per la verifica tramite StarterSymbols Calcolo dei DirectorSymbols DS(Aα) = SS(α)FOLLOW(A) Insiemi disgiunti Condizione necessaria e sufficiente verificata ! Analisi Ricorsiva Discendente ( top - down ) Una funzione per ogni VN in grado di riconoscere il sottolinguaggio generato da esso Immediata costruzione del riconoscitore Il linguaggio generato è regolare ( tipo 3) poiché la grammatica non contiene self - embedding 21/06/2010 ViBiTech 11

12 Architettura del sistema 1 21/06/2010 ViBiTech 12 etc … Scanner generat o in automat ico da JavaCC ; individ ua i singoli token Parser generat o in automat ico da JavaCC ; effettu a l analis i sintatt ica Effettuano l analisi semantica visitando l AST grazie al meccanismo del Double Dispatch. Due differenti funzioni di interpretazione… Package generato in automatico da JTB a partire dal file di specifica della grammatica Package generato in automatico da JTB contenente interfaccia del visitor e implementazi one con visita DepthFirst

13 Architettura del sistema 2 Analisi semantica realizzata dai Visitor ViBiTechVisitor ViBiTechVisitor Controllo coerenza con la base di dati esistente : In caso di : Inserimento creazione di nuova riga nella tabella Ricerca, Aggiornamento verifica di presenza di una scheda con Prestito, Rimozione titolo coincidente Rimozione di eventuale effetto collaterale sui prestiti collegati Libro / Film presenti Controllo sulle date giorno [1,31], mese [1,12] ViBiTechTreeVisitor ViBiTechTreeVisitor Crea una rappresentazione dell AST utilizzando classi del package javax.swing.tree omettendo produzioni non significative 21/06/2010 ViBiTech 13

14 Architettura del sistema 3 Gestione della persistenza : Pattern DataAccessObject per accesso al DB : Il cambiamento del dispositivo di persistenza non ha impatto sui componenti di business Pattern creazionale Factory per ottenere le implementazioni concrete Implementazione : DerbyDB 21/06/2010 ViBiTech 14 Logica di accesso ai dati : If stabilis cono metodi read / writ e Logic a di busin ess Implemen tazione JDBC : astrazio ne dallo specific o DB sottosta nte Impleme ntazion i in accordo allo specifi co DB Patte rn creaz ional e

15 Architettura del sistema 4 Utilities : Classi per inizializzare il DB ed effettuare controlli in fase di progettazione Classi per l highlighting delle frasi inserite nell interfaccia grafica Classi per la gestione di apertura e salvataggio di file in formato. vbt 21/06/2010 ViBiTech 15

16 Architettura del sistema 5 Interfaccia grafica : Frame che lancia e gestisce l applicazione Classi per la gestione delle tabelle nell interfaccia grafica Finestra di dialogo per l eventuale sovrascrittura in fase di salvataggio di file Frame per la gestione di informazioni sull applicazion e 21/06/2010 ViBiTech 16

17 Package GUI in azione 21/06/2010 ViBiTech 17 Visuali zzazion e a tabelle dei dati esisten ti Albero rappres entante l esecuz ione di un comando Area per l inseri mento dei comandi in forma testual e Tasti rapidi per l inserime nto di strutture predefinit e dei comandi testuali Area di notifica per eventual i messaggi di errore Syntax highli ghting

18 Test e collaudi Al fine di collaudare il sistema sono stati eseguiti test per verificare la correttezza delle analisi semantiche tramite opportuni file. vbt dati in input File con sintassi errata File corretti sintatticamente ma con errori di semantica Previsione di messaggi opportuni in caso di rilevazione di errori sintattici / semantici Area apposita per la visualizzazione sull interfaccia Suite di test JUnit per verificare la correttezza delle routine DAO 21/06/2010 ViBiTech 18

19 Tecnologie Linguaggio di programmazione Java _ 20 Ambiente di sviluppo NetBeans 6. 8 Generazione parser e scanner JavaCC 5. 0 Generazione documentazione della grammatica JJDoc Generazione APT e visitor Java Tree Builder Ambiente di test JUnit /06/2010 ViBiTech 19

20 Limiti e caratteristiche non supportate Assenza di un effettivo collegamento fra film e libri Realizzare join fra tabelle e inserire controlli semantici in caso sia presenti il campo facoltativo ( )? La funzionalità di apertura di una scheda non produce alcun effetto grafico se non la generazione dell APT Predisporre finestra aggiuntiva che si apra mostrando tutti i campi della scheda 21/06/2010 ViBiTech 20

21 Sviluppi futuri... Interazione con il sistema unicamente attraverso interfaccia grafica Finestre che si aprono per l immissione e la modifica dei vari campi Supporto a diverse modalità di gestione della persistenza Arricchimento delle funzionalità fornite Possibilità di visualizzare l immagine della copertina se inserita Liste predefinite per il completamento di alcuni campi relativamente standard : Autori tabella associata nel DB Principali editori Genere, Giudizio … 21/06/2010 ViBiTech 21

22 Demo 21/06/2010 ViBiTech 22


Scaricare ppt "Studente: Veronica Conti Docente: Enrico Denti ViBiTech Linguaggio per la gestione di una videoteca e biblioteca domestica Progetto per lesame di Linguaggi."

Presentazioni simili


Annunci Google