La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e Modelli computazionali LS A.A. 2009-2010 Giovanni.

Presentazioni simili


Presentazione sul tema: "Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e Modelli computazionali LS A.A. 2009-2010 Giovanni."— Transcript della presentazione:

1 Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e Modelli computazionali LS A.A Giovanni Leonardo Concas

2 Introduzione: Lo scopo del progetto consiste nella realizzazione di un semplice linguaggio per la generazione di biglietti da visita. Data la vastità delle tipologie, si è deciso di creare una soluzione focalizzata su un certo tipo di biglietti: quelli personali. In particolare, sono state prese in considerazione due categorie di destinatari: Liberi professionisti Dipendenti dazienda

3 Caratteristiche (1/2) Lapplicazione legge un opportuno input, da tastiera o da file, lo valuta e genera unanteprima del biglietto. A questo punto, è possibile salvare lanteprima sottoforma di immagine.bmp o.jpg oppure si può creare un file.pdf con il numero di biglietti specificato nellinput. Il formato del biglietto da visita scelto è quello standard italiano, comune anche a numerosi paesi europei, di 85x55 mm (fonte Wikipedia). In caso di salvataggio come immagine, la risoluzione sarà pari a quella del file scelto come sfondo. E importante, naturalmente, mantenere le proporzioni relative al formato descritto sopra. I tipi di file supportati per creare lo sfondo sono due,.bmp e.jpg, e dovranno essere posizionati nella cartella Sfondi.

4 Caratteristiche (2/2) E possibile, inoltre, scegliere i font da utilizzare. Per farlo è necessario copiare il corrispondente file.ttf nella cartella Fonts che andrà creata nella directory in cui si trova leseguibile. Per quanto riguarda la possibilità di leggere linput da file di testo, la cartella di default è chiamata Files di input. I file creati vengono salvati nella cartella Risultati. Nel caso le cartelle Files di input e Risultati non siano presenti, lapplicazione utilizzerà la cartella Documenti. Qualora, invece, manchino le cartelle Fonts e Sfondi, il sistema genera un errore. La loro presenza è dunque obbligatoria. Per facilitare la creazione del biglietto è presente una procedura guidata.

5 Esempio: Biglietto da visita { intestazione { Sara Mannocchi | arial 60 | } impiego { Assistente Division Manager | arial 40 | } indirizzo { Azienda s.r.l. via Tal dei tali n° Bologna (BO) | arial 16 | } recapiti { tel: fax: cell: | arial 16 | } sfondo { esempioSfondo.bmp } copie { 15 }

6 Strumenti utilizzati Linguaggio: Java – JDK Ambiente di sviluppo: Eclipse Generazione automatica del Parser: JavaCC 5.0 Generazione automatica dell AST e del Visitor: JTB Questi ultimi due strumenti fanno parte del JavaCC Eclipse Plug-in Creazione dei file pdf: libreria iText 5.0.2

7 Token ::= "|" ::= "via" | "piazza" | "p.zza" | "corso" | "viale" |"località" | "loc" | "largo" | "vicolo" ::= "n" | "n:" | "num" | "num:" | "n°" ::= "("["A"-"Z"]["A"-"Z"]")" ::= "tel:" | "telefono:"| "Tel:" | "Telefono:" ::= "fax:" | "Fax: ::= "cell:" | "cellulare:" | "Cell:" | "Cellulare:" ::= " " | " " | " " | " " ::= "bmp"|"jpg ::= ("s.r.l. "| "s.p.a. " |"s.n.c. " | "s.a.s. " | "s.a.p.a."| "s.r.l."| "S.p.a. " |"S.n.c. | "S.a.s."|"S.a.p.a.") ::= (["0"-"9"])+ ::= ("com" |"org"| "edu"| "it"|"gov"|"net"|"info"|"net") ::= (["A"-"Z","a"-"z","0"-"9","'","_","-"])+

8 Grammatica (1/3) S::= Biglietto da visita { } ::= intestazione { } ::= ( )+ ::= ::= impiego { } ::= ( )+ ::= Un biglietto da visita è composto da: Unintestazione Un impiego Un indirizzo Un insieme di recapiti Uno sfondo Un biglietto da visita è composto da: Unintestazione Un impiego Un indirizzo Un insieme di recapiti Uno sfondo è composto da: Una stringa multipla per Nome e Cognome Un campo per il carattere a sua volta composto da due elementi: il nome del carattere e la sua dimensione Un campo per le coordinate composto da due valori relativi alla posizione in cui collocare il testo nel biglietto che verrà creato è composto da: Una stringa multipla per Nome e Cognome Un campo per il carattere a sua volta composto da due elementi: il nome del carattere e la sua dimensione Un campo per le coordinate composto da due valori relativi alla posizione in cui collocare il testo nel biglietto che verrà creato è analogo al caso precedente

9 Grammatica (2/3) ::= indirizzo{ [ ] [ ] } ::= ( )+ [ ] ::= ( )+ ::= ::= ( )+ ::= è composto da: Una sede opzionale Una via Un numero civico Un cap Una città Un indirizzo web opzionale è composto da: Una sede opzionale Una via Un numero civico Un cap Una città Un indirizzo web opzionale

10 Grammatica (3/3) ::= recapiti { [ ] [ ] [ ] } ::= ( )+ ::= ::= sfondo {. } ::= copie { } è composto da: Un elemento opzionale che comprende uno o più numeri di telefonia fissa Un elemento opzionale che comprende uno o più numeri di fax Un elemento che comprende uno o più numeri di telefonia mobile Un elemento per lindirizzo di posta elettronica Un elemento per il tipo e la dimensione del carattere da utilizzare per i recapiti Un elemento per il posizionamento nel layout del biglietto è composto da: Un elemento opzionale che comprende uno o più numeri di telefonia fissa Un elemento opzionale che comprende uno o più numeri di fax Un elemento che comprende uno o più numeri di telefonia mobile Un elemento per lindirizzo di posta elettronica Un elemento per il tipo e la dimensione del carattere da utilizzare per i recapiti Un elemento per il posizionamento nel layout del biglietto comprende il nome e lestensione del file di sfondo da utilizzare comprende il numero dei biglietti che verranno creati in formato pdf

11 Grammatica e linguaggio Grammatica: tipo 2, secondo la classificazione di Chomsky. Le produzioni sono vincolate alla forma: A α con α є (VT U VN)* ed A є VN Linguaggio: tipo 3, regolare poiché privo di self-embedding. La grammatica è LL(1), dal momento che gli insiemi degli Starter Symbols sono disgiunti e nessuna produzione genera la stringa vuota. Pertanto, è possibile effettuare lanalisi left to right applicando la left-most derivation utilizzando al più un simbolo della frase per poter scegliere con certezza la produzione opportuna.

12 Architettura del sistema Il sistema riceve in ingresso i caratteri, sia tramite input da tastiera sia caricando un file di testo. Viene restituita una sequenza di token. Scanner Parser Visitor Il Parser effettua lanalisi sintattica ovvero verifica la correttezza delle frasi in base alle regole della grammatica. Produce una rappresentazione della frase sottoforma di AST. Il Visitor consente una visita depth first dellalbero. Sono presenti implementazioni personalizzate che si occupano dellanalisi semantica e della creazione dellalbero per linterfaccia grafica. Caratteri Token AST

13 Visitor Sono state create due implementazioni personalizzate: TreeVisitor.java che si occupa della creazione dei nodi per la rappresentazione grafica dellalbero nella schermata principale dellinterfaccia grafica; BCVisitor.java che si occupa della raccolta dei dati necessari allelaborazione ed effettua i controlli semantici; Per realizzare le suddette implementazioni, è stata sfruttata la classe DepthFirstVoidVisitor.java, generata automaticamente.

14 Package bcMain – Contiene il core dellapplicazione gui – Contiene le classi che realizzano linterfaccia grafica principale e il wizard. myVisitor – Contiene le implementazioni personalizzate del Visitor visitor – Contiene le classi relative al Visitor generate automaticamente da JTB parser – Contiene le classi relative al Parser generate automaticamente da JavaCC syntaxtree – Contiene le classi per la costruzione dell AST paintPrint – Contiene le classi relative alla creazione dellanteprima e al salvataggio su file fileFilter – Contiene le classi che realizzano i filtri per visualizzare solo i file opportuni durante i caricamenti e i salvataggi

15 Analisi Semantica (1/3) Lanalisi semantica viene effettuata sfruttando il pattern Visitor. Di seguito il dettaglio dei controlli che vengono effettuati: Verifica che il cap sia composto da 5 cifre; Verifica che il nome delleventuale sito web non cominci con il carattere. e che non ne contenga di consecutivi. Si verifica inoltre che non contenga il specifico per le Verifica che lindirizzo non cominci con il carattere. e che non ne contenga di consecutivi. Verifica che contenga il ripetuto una sola volta.

16 Analisi Semantica (2/3) Lanalisi semantica viene effettuata direttamente dal Parser. Di seguito il dettaglio dei controlli che vengono effettuati: Verifica che esista le cartelle Sfondi e che contenga almeno un file del tipo.bmp o.jpg Verifica che il nome del file dello sfondo corrisponda ad un file esistente. Verifica che esista le cartelle Fonts e che contenga almeno un file del tipo.ttf Verifica che il nome del font indicato corrisponda ad un file esistente.

17 Analisi Semantica (3/3) Lanalisi semantica viene effettuata direttamente dal Parser. Di seguito il dettaglio dei controlli che vengono effettuati: Verifica che la dimensione del carattere sia compresa tra 8 e 72. Verifica che le coordinate (x,y) siano comprese tra (0,0) e (850 x 550). Verifica che il numero di telefonia fissa e di fax cominci per 0. Verifica che il numero di telefonia mobile cominci per 3.

18 Interfaccia grafica Wizard (1/2):

19 Interfaccia grafica Wizard (2/2):

20 Interfaccia grafica Schermata principale:

21 Interfaccia grafica Anteprima:

22 Sviluppi futuri Ampliamento delle categorie coinvolte: non più biglietti personali ma anche riferiti a esercizi commerciali e aziende -> aggiunta di più campi opzionali. possibilità di creare badge per convegni e conferenze -> indizizzo e recapiti diventano opzionali. Miglioramento interfaccia wizard, ad esempio affiancando al sistema di coordinate la possibilità di trascinare col mouse i campi nei punti desiderati.


Scaricare ppt "Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e Modelli computazionali LS A.A. 2009-2010 Giovanni."

Presentazioni simili


Annunci Google