Date post: | 02-May-2015 |
Category: |
Documents |
Upload: | callisto-ventura |
View: | 219 times |
Download: | 3 times |
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
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
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
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,_,\])+
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>
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)
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)
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
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
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
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
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)
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.
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
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
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
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
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
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
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
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