Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e...

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

Transcript of Business Card Linguaggio per la generazione di biglietti da visita Progetto per il corso Linguaggi e...

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

Business Card

Linguaggio per la generazione di biglietti da visita

Progetto per il corso Linguaggi e Modelli computazionali LS

A.A. 2009-2010

Giovanni Leonardo Concas 0000248228

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

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 d’azienda

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

Caratteristiche (1/2)

L’applicazione legge un opportuno input, da tastiera o da file, lo valuta e genera un’anteprima del biglietto. A questo punto, è possibile salvare l’anteprima sottoforma di immagine .bmp o .jpg oppure si può creare un file .pdf con il numero di biglietti specificato nell’input.

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.

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

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 l’eseguibile.

Per quanto riguarda la possibilità di leggere l’input 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, l’applicazione 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.

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

Esempio:Biglietto da visita {

intestazione {Sara Mannocchi | arial 60 | 100 170

}impiego {

Assistente Division Manager | arial 40 | 100 250

}indirizzo {

Azienda s.r.l.via Tal dei tali n°240100 Bologna (BO)www.sitoazienda.com | arial 16 | 100 345

}recapiti {

tel: 032432432fax: 02342344cell: 34543543email: [email protected] | arial 16 | 600 345

}sfondo {

esempioSfondo.bmp}copie {

15}

}

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

Strumenti utilizzati

Linguaggio: Java – JDK 1.6.0

Ambiente di sviluppo: Eclipse 3.5.2

Generazione automatica del Parser: JavaCC 5.0

Generazione automatica dell’ AST e del Visitor: JTB 1.4.3

Questi ultimi due strumenti fanno parte del JavaCC Eclipse Plug-in 1.5.22

Creazione dei file pdf: libreria iText 5.0.2

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

Token

<BARRA > ::= "|"

<VIA> ::= "via" | "piazza" | "p.zza" | "corso" | "viale" |"località" | "loc" |

"largo" | "vicolo"

<CIVICO>::= "n" | "n:" | "num" | "num:" | "n°"

<PROV> ::= "("["A"-"Z"]["A"-"Z"]")"

<TEL>::= "tel:" | "telefono:"| "Tel:" | "Telefono:"

<FAX>::= "fax:" | "Fax:“

<CELL>::= "cell:" | "cellulare:" | "Cell:" | "Cellulare:"

<EMAIL>::= "email:" | "Email:" | "email:" | "E-mail:"

<ESTENSIONE>::= "bmp"|"jpg“

<AZIENDA>::= ("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.")

<NUM>::= (["0"-"9"])+

<SITOEMAIL>::= (["a"-"z","0"-"9","_","-",".","@"])+ ("com" |"org"|

"edu"| "it"|"gov"|"net"|"info"|"net")

<STRINGA>::= (["A"-"Z","a"-"z","0"-"9","'","_","-"])+

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

Grammatica (1/3)

S::= Biglietto da visita { <intestazione> <impiego> <indirizzo>

<recapiti> <sfondo> }

<intestazione>::= intestazione { <nomeCognome> <BARRA>

<CarattereIntestazione> <BARRA> <coordinateIntestazione> }

<nomeCognome>::= (<STRINGA>)+

<CarattereIntestazione>::= <STRINGA> <NUM>

<CoordinateIntestazione>::= <NUM> <NUM>

<impiego>::= impiego { <tipoImpiego> <BARRA>

<CarattereImpiego> <BARRA> <coordinateImpiego> }

<tipoImpiego>::= (<STRINGA>)+

<CarattereImpiego>::= <STRINGA> <NUM>

Un biglietto da visita è composto da:• Un’intestazione• Un impiego• Un indirizzo • Un insieme di recapiti• Uno sfondo

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

<impiego> è analogo al caso precedente

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

Grammatica (2/3)<indirizzo>::= indirizzo{ [<sede>] <via> <civico> <cap> <città>

[<sitoWeb>] <BARRA> <carattereIndirizzo> <BARRA>

<coordinateIndirizzo> }

<sede>::= (<STRINGA>)+ [<AZIENDA>]

<via>::= <VIA> (<STRINGA>)+

<civico>::= <CIVICO> <NUM>

<cap>::= <NUM>

<città>::= (<STRINGA>)+ <PROV>

<sitoWeb>::= <SITOEMAIL>

<CarattereIndirizzo>::= <STRINGA> <NUM>

<CoordinateIndirizzo>::= <NUM> <NUM>

<indirizzo> è composto da:• Una sede opzionale• Una via• Un numero civico• Un cap• Una città• Un indirizzo web opzionale

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

Grammatica (3/3)<recapiti>::= recapiti { [<fisso>] [<fax>] <cell> [<email>] <BARRA>

<carattereTelEmail> <BARRA> <coordinateTelEmail> }

<fisso> ::= <TEL> (<NUM>)+

<fax> ::= <FAX> (<NUM>)+

<cell> ::= <CELL> (<NUM>)+

<email> ::= <EMAIL><SITOEMAIL >

<CarattereRecapiti>::= <STRINGA> <NUM>

<CoordinateRecapiti>::= <NUM> <NUM>

<sfondo>::= sfondo { <STRINGA> . <ESTENSIONE> }

<copie>::= copie { <NUM> }

<recapiti> è 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 l’indirizzo 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

<sfondo> comprende il nome e l’estensione del file di sfondo da utilizzare<copie> comprende il numero dei biglietti che verranno creati in formato pdf

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

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 l’analisi left to right applicando la left-most derivation utilizzando al più un simbolo della frase per poter scegliere con certezza la produzione opportuna.

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

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 l’analisi 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 dell’albero. Sono presenti implementazioni personalizzate che si occupano dell’analisi semantica e della creazione dell’albero per l’interfaccia grafica.

Caratteri

Token

AST

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

Visitor

Sono state create due implementazioni personalizzate:

• TreeVisitor.java che si occupa della creazione dei nodi per la rappresentazione grafica dell’albero nella schermata principale dell’interfaccia grafica;

• BCVisitor.java che si occupa della raccolta dei dati necessari all’elaborazione ed effettua i controlli semantici;

Per realizzare le suddette implementazioni, è stata sfruttata la classe DepthFirstVoidVisitor.java, generata automaticamente.

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

Package

• bcMain – Contiene il core dell’applicazione

• gui – Contiene le classi che realizzano l’interfaccia 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 dell’anteprima 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

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

Analisi Semantica (1/3)

L’analisi 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 dell’eventuale sito web non cominci con il carattere “.” e che non ne contenga di consecutivi. Si verifica inoltre che non contenga il carattere “@”, specifico per le e-mail

• Verifica che l’indirizzo e-mail non cominci con il carattere “.” e che non ne contenga di consecutivi. Verifica che contenga il carattere “@” ripetuto una sola volta.

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

Analisi Semantica (2/3)

L’analisi 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.

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

Analisi Semantica (3/3)

L’analisi 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”.

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

Interfaccia grafica

Wizard (1/2):

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

Interfaccia grafica

Wizard (2/2):

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

Interfaccia grafica

Schermata principale:

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

Interfaccia grafica

Anteprima:

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

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.