Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM...

21
Gianfranco Zampoli 00002717 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM EM Linguaggio per la Descrizione Linguaggio per la Descrizione di un Evento Musicale di un Evento Musicale presso un locale presso un locale

Transcript of Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM...

Page 1: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

EMEMLinguaggio per la Descrizione Linguaggio per la Descrizione

di un Evento Musicale di un Evento Musicale presso un localepresso un locale

Page 2: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Lo scopo del lavoroLo scopo del lavoro EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Sviluppo di un linguaggio per la descrizione di un evento musicale presso un localecon informazioni relative al locale, data dell'evento e scaletta della serata(es. singolo concerto, serie di concerti o concerto più dj set) e generazionedella locandina relativa a tale evento.

Linguaggio semplice e di facile comprensione ma allo stesso tempo completo e caratterizzato da regole lessicali, sintattiche e semantiche

Page 3: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Linguaggio: esempioLinguaggio: esempio EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Evento Musicale {

Estragon, via Stalingrado num. 83, Bologna (BO), info: 051/323490, autobus: linea 25,Mar 16 Marzo,

Scaletta {

Franz Ferdinand,indie rock - Eng,ore: 22:00,biglietto € 34.50

Dj set rock by: Dj Mingo,ore: 00:00,ingresso free entry

chiusura localeore: 04:00

}}

}

}}

}}

Locale

Data

Concerto

Dj set

Chiusura

Page 4: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

TokenToken EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

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

<GIORNO> ::= Lun | Mar | Mer | Gio | Ven | Sab | Dom

<MESE> ::= Gennaio | Febbraio | Marzo | Aprile | Maggio | Giugno | Luglio | Agosto |Settembre | Ottobre |

Novembre | Dicembre

<PROV> ::= [A-Z][A-Z]

<VIRGOLA> ::= ,

<VIA> ::=via

<CIVICO> ::= num. | n. | num | n

<AUTOBUS> ::= autobus | autobus: | autobus: linea

<SCALETTA> ::= Scaletta

<ORE> ::= ore: | ore

<BIGLIETTO> ::= biglietto | ingresso | biglietto: | ingresso:

<EURO> ::= euro | €

<FREE> ::= free entry | ingresso libero | libero

<DJSET> ::= Dj set | Djset | Dj Set | DjSet

<BY> ::= by: | by

<CHIUSURA> ::= chiusura | chiusura locale | Chiusura Locale | Chiusura locale | Chiusura

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

Page 5: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Grammatica utilizzataGrammatica utilizzata EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

S::= Evento Musicale { <Locale> <VIRGOLA> <Data> <VIRGOLA> <Scaletta> }

<Locale> ::= <StringaComposta> <VIRGOLA> <Indirizzo> <VIRGOLA> info: <Tel> <VIRGOLA> [<Autobus>]

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

<Indirizzo> ::=<VIA> <StringaComposta> <CIVICO> <NUM> <VIRGOLA> <Città>

<Città> ::= <StringaComposta> ( <PROV> )

<Tel> ::= <NUM> / <NUM>

<Autobus> ::= <AUTOBUS> <NUM>

<Data> ::= <GIORNO> <NUM> <MESE>

<Scaletta> ::= <SCALETTA> { (<Concerto>)* [<DjSet>] <Chiusura> }

<Concerto> ::= <StringaComposta> <VIRGOLA> <StringaComposta> - <STRINGA> <VIRGOLA> <ORE>

<Orario> <VIRGOLA> <BIGLIETTO> <Prezzo>

<Orario> ::= <NUM> : <NUM>

<Prezzo> ::= <PrezzoEuro> | <FREE>

<PrezzoEuro> ::= <EURO> <NUM> . <NUM>

<DjSet>::= <DJSET> <StringaComposta> <BY> <StringaComposta> <VIRGOLA> <ORE> <Orario> <VIRGOLA>

<BIGLIETTO> <Prezzo>

<Chiusura>::= <CHIUSURA> <ORE> <Orario>

Page 6: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

S::= Evento Musicale { <Locale> <VIRGOLA> <Data> <VIRGOLA> <Scaletta> }

S, Scope della grammatica, indica che un evento musicale è caratterizzato da:

Un Locale

Una Data

Una Scaletta

<Locale> ::= <StringaComposta> <VIRGOLA> <Indirizzo> <VIRGOLA> info: <Tel> <VIRGOLA> [<Autobus>]

Locale è composto da:

Il nome del locale

Il suo indirizzo

Il numero telefonico

Linea dell'autobus per raggiungerlo (opzionale)

Page 7: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

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

Uno o più token di tipo Stringa

<Indirizzo> ::=<VIA> <StringaComposta> <CIVICO> <NUM> <VIRGOLA> <Città>

Indirizzo è composto da:

Il nome della via

Il numero civico

La città

<Città> ::= <StringaComposta> ( <PROV> )

Città è composto da:

Il nome della città

La provincia (opzionale)

Page 8: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

<Tel> ::= <NUM> / <NUM>

Il numero di telefono (prefisso/numero)

<Autobus> ::= <AUTOBUS> <NUM>

La linea dell'autobus

<Data> ::= <GIORNO> <NUM> <MESE>

Data è composto da:

Il giorno della settimana

Il giorno del mese

Il mese

L'anno è stato omesso in quanto si considera sempre quello corrente

Page 9: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

<Scaletta> ::= <SCALETTA> { (<Concerto>)* [<DjSet>] <Chiusura> }

<Concerto> ::= <StringaComposta> <VIRGOLA> <StringaComposta> - <STRINGA> <VIRGOLA> <ORE>

<Orario> <VIRGOLA> <BIGLIETTO> <Prezzo>

Concerto è composto da:

Il nome del gruppo o dell'artista

Il genere musicale

La nazionalità

Scaletta è composto da:

Nessuno o più concerti

Dj Set (opzionale)

Orario di chiusura

L'orario di inizio del concerto

Il prezzo del biglietto

Page 10: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

<Orario> ::= <NUM> : <NUM>

<Prezzo> ::= <PrezzoEuro> | <FREE>

Prezzo può essere

Espresso in euro

Ingresso libero

Orario è composto da:

Ore

Minuti

<PrezzoEuro> ::= <EURO> <NUM> . <NUM>

PrezzoEuro è composto da:

Euro

Centesimi di euro

Page 11: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Regole di produzioneRegole di produzione EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

<DjSet>::= <DJSET> <StringaComposta> <BY> <StringaComposta> <VIRGOLA> <ORE> <Orario> <VIRGOLA>

<BIGLIETTO> <Prezzo>

<Chiusura>::= <CHIUSURA> <ORE> <Orario>

Orario di chiusura del locale

DjSet è composto da:

Genere musicale

Nome Dj

Orario inizio DjSet

Prezzo del biglietto

Page 12: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Tipologia grammatica e linguaggioTipologia grammatica e linguaggio EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Grammatica:Grammatica:Tipo 2 - context free secondo la classificazione di Chomskyproduzioni vincolate alla forma A → α con α є (VT U VN)* ed A є VN

Linguaggio:Linguaggio:Tipo 3 – regolare (privo di self-embedding)

Grammatica di tipo LL(1)Grammatica di tipo LL(1)FFrasi analizzabili left to right utilizzando al più 1 simbolo della fraseper scegliere con certezza la produzione da applicare per la riscrittura(starter symbols disgiunti e nessun metasimbolo può generare la stringa vuota)

Page 13: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Analisi del problemaAnalisi del problema EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Analisi LessicaleAnalisi Lessicale

Analisi SintatticaAnalisi Sintattica

Analisi SemanticaAnalisi Semantica

Scanner

Parser

Visitor

Data una sequenza di caratteri in ingresso restituisceuna sequenza di Token.

Data una sequenza di Token in ingresso ne valuta la correttezzasintattica in base alle regole grammaticali.

Data la rappresentazione prodotta dal Parser ne controllala coerenza logica ovvero il corretto significato.

Page 14: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Strumenti utilizzatiStrumenti utilizzati EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Ambiente di sviluppo: NetBeans IDE NetBeans IDE 6.0.1

Linguaggio: JavaJava (jdk 1.6)

Generazione automatica Parser: JavaCCJavaCC 4.2

Generazione automatica classi per creare l'albero sintattico ASTe per l'implementazione del Visitor che opera in depth first: Java Tree BuilderJava Tree Builder 1.3.2

Page 15: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Architettura del sistemaArchitettura del sistema EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Package

EMEM

GUIGUI

parserparser

visitorvisitor

syntaxtreesyntaxtree

imagesimages

Interfacce grafiche

Immagini utilizzate all'interno delle interfacce grafiche

Visitor creati automaticamente da JTB e implementazioni della classe DephtFirstVisitor

Classi relative allo scanner ed al parser create in automatico da javacc

Classi per la costruzione dell'AST

Classi per istanziare gli oggetti necessari alla creazione della Locandina

Page 16: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Implementazioni DepthFirstVisitor Implementazioni DepthFirstVisitor EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

EventoMusicaleVisitorEventoMusicaleVisitor

TreeVisitorTreeVisitor

Crea gli oggetti necessari per la creazione della Locandina dell'evento, es: Locale, Data, Concerto, DjSet, ...

Crea i nodi dell'albero per poi visualizzarlo nell'interfaccia graficacome in Figura

Effettua gli opportuni controlli semantici

Page 17: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Analizzatore semanticoAnalizzatore semantico EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Controllo correttezza orari

Controllo successione orari in scaletta

A differenza dell'analizzatore lessicale (scanner) e di quello sintattico (parser) l'analizzatorelessicale non può essere espresso con una notazione formale, per questo è stata utilizzatauna notazione logica/aritmetica attraverso funzioni realizzate direttamente in linguaggio Java.

Controllo Scaletta

Si verifica che sia presente almeno un Concerto o un DjSet

Si verifica che gli orari siano nel range 00:00 - 23:59

Si verifica che l'orario del DjSet sia successivo a quello dell'inizio del Concertoe che l'orario di chiusura del locale sia successivo a quello di inizio del DjSet

Page 18: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

EM - Linguaggio per la Descrizione di un Evento Musicale presso un localeInterfacce grafiche 1/3Interfacce grafiche 1/3

Text Area Valutazione LinguaggioText Area Valutazione Linguaggio

Text Area Text Area Linguaggio InputLinguaggio Input

Albero Albero

Page 19: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Interfacce grafiche 2/3Interfacce grafiche 2/3 EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Form di inserimento informazioni locale e data evento

I campi obbligatori sono evidenziatida un asterisco (*) e vengono controllatialla pressione del tasto ok

Altri Form dello stesso tiposono presenti per l'inserimento guidatodi un Concerto, DjSet e orario di chiusura

Page 20: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

EM - Linguaggio per la Descrizione di un Evento Musicale presso un localeInterfacce grafiche 3/3Interfacce grafiche 3/3

LocandinaLocandina generata utilizzandotutte le informazioni ricavate dalladescrizione dell'evento musicale

Informazioni locale

Concerto

Dj Set

Chiusura

Page 21: Gianfranco Zampolini 0000271759 Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.

Gianfranco Zampolini

0000271759Progetto per il corso di:Linguaggi e Modelli Computazionali LS

Limiti e Sviluppi futuriLimiti e Sviluppi futuri EM - Linguaggio per la Descrizione di un Evento Musicale presso un locale

Maggiore dettaglio nella descrizione di un evento e introduzione di ulteriori campiopzionali per permettere una maggior personalizzazione della locandina

Realizzazione di locandine per serate che prevedono più di un concerto in scaletta

Generazione di locandine di diverso tipo con la possibilità di selezionare template