Linguaggio per la generazione di biglietti da visita

Slides:



Advertisements
Presentazioni simili
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Advertisements

Introduzione ad XML Mario Arrigoni Neri.
APRIRE PROGRAMMA DI POSTA OUTLOOK EXPRESS
Interazione Uomo - Macchina
Comunicare con la posta elettronica (7.4)
STRUMENTI DI PRESENTAZIONE
Progettazione di un sito web
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Inizio nuovo lavoro.
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 91 Il modello OAI (Object-Action Interface) Sintassi e semantica: la sintassi specifica.
Sistema Geomonitor Schema di funzionamento generale
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Espressioni condizionali
GIMP!: COME RENDERE TRASPARENTE LO SFONDO DI UN’IMMAGINE
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Elenco dei risultati di EBSCOhost tutorial. Benvenuti al tutorial relativo allelenco dei risultati di EBSCOhost. In questo tutorial verranno illustrate.
Introduzione a EBSCOhost Tutorial. Benvenuti alla panoramica sullinterfaccia di EBSCOhost. In questo tutorial viene illustrata linterfaccia di ricerca.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
portale per la gestione di pratiche medico-legali per le assicurazioni
ANTLR V.3 Renzi Alberto.
Ll Questionario Introduzione al software SAS (Parte 2) Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°2.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Centro di Assistenza Multicanale (C.A.M.) di Cagliari
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
LINGUAGGIO PER LA DESCRIZIONE DI ESERCITI E LA CREAZIONE DI LISTE PER IL GIOCO DI BATTAGLIE TRIDIMENSIONALI WARHAMMER FANTASY WarArmy Linguaggi e Modelli.
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggi e Modelli Computazionali a.a. 2009/2010
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
BENVENUTI. Istruzioni per la compilazione dei moduli di domanda interattivi del Comune di Vignola Consigliamo di leggere attentamente queste istruzioni.
Linguaggi e modelli computazionali LS
WORD Lezione n. 1 Aprire il programma Aprire un documento esistente
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Foglio elettronico Excel Livello avanzato
Presentazione del problema Obiettivo: Lapplicazione di Search of Sematic Services permette di ricercare sevizi semantici, ossia servizi a cui sono associati.
Corso di Laurea Specialistica in Ingegneria Informatica Previsione dei Consumi Elettrici = Progetto per lesame di Linguaggi e Modelli Computazionali LS.
Un linguaggio ed un interprete per il gioco Citadels
Progetto don’t you forget
Progetto Fireworks Simulatore di spettacoli pirotecnici
Tablabla Progetto di Valent Cristina
SQL File Manager un nuovo modo di gestire il filesystem….
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
Linguaggi e modelli computazionali LS Manni Tiziano
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Percorso didattico per l’apprendimento di Microsoft Access Modulo 5
Processo di Registrazione portali: MyCompany
SAS® OnDemand for Academics SAS Studio
In un mercato in cui la parola più comune è "Globalizzazione" SG SERVICES Srl ha pensato di creare per le piccole e medie imprese, artigiani, professionisti,
Diventa blogger Analisi degli obiettivi Piattaforma Wordpress Francesca Sanzo -
Progetto Finale Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Microsoft Access Chiavi, struttura delle tabelle.
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
GUIDA ALL’UTILIZZO DEL
“Il bollettino filatelico” 15 aprile 1915 I giornalisti sbagliano!
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
SISTEMA GESTIONE TOMBINI
INTRODUZIONE. INTRODUZIONE ordinare la stampa dei documenti personalizzati Postel On The Net (PON) è un sistema integrato per gestire via internet.
Planet HT – Genova - Elisa Delvai
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

Linguaggio per la generazione di biglietti da visita 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

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

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.

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.

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°2 40100 Bologna (BO) www.sitoazienda.com | arial 16 | 100 345 recapiti { tel: 032432432 fax: 02342344 cell: 34543543 email: sara@esempio.com | arial 16 | 600 345 sfondo { esempioSfondo.bmp copie { 15

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

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","'","_","-"])+

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

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

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

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.

Architettura del sistema Caratteri 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 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. Token Parser 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. Visitor

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.

Package bcMain – Contiene il core dell’applicazione gui – Contiene le classi che realizzano l’interfaccia grafica principale e il wizard. 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 visitor – Contiene le classi relative al Visitor generate automaticamente da JTB myVisitor – Contiene le implementazioni personalizzate del Visitor parser – Contiene le classi relative al Parser generate automaticamente da JavaCC syntaxtree – Contiene le classi per la costruzione dell’ AST

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.

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 Fonts e che contenga almeno un file del tipo .ttf Verifica che esista le cartelle Sfondi e che contenga almeno un file del tipo .bmp o .jpg Verifica che il nome del font indicato corrisponda ad un file esistente. Verifica che il nome del file dello sfondo corrisponda ad un file esistente.

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

Interfaccia grafica Wizard (1/2):

Interfaccia grafica Wizard (2/2):

Interfaccia grafica Schermata principale:

Interfaccia grafica Anteprima:

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.