CineMan Linguaggio per la descrizione della programmazione di cinema

Slides:



Advertisements
Presentazioni simili
Introduzione ad XML Mario Arrigoni Neri.
Advertisements

Rap4Leo: istruzioni per l’uso
I linguaggi di programmazione
Analizzatori Sintattici con Cup Giuseppe Morelli.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 HTML - I Frame Laboratorio di Applicazioni Informatiche II mod. A.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Informatica (Basi di Dati)
1 Anatomia di una pagina Un insieme di pagine web hanno generalmente una parte invariante (o poco): header, navigazione, footer una parte variabile: contenuti.
Analisi ed ottimizzazione di strumenti Software per l'utilizzo di IDL sulla GRID ENEA S.PI.1.2 Strumenti per la grafica Marta Chinnici Portici, 11 Dicembre.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Cercare informazioni sul Web. 5-2 Organizzazione dellinformazione tramite gerarchie Classificazione gerarchica Linformazione è raggruppata in un piccolo.
Unità Didattica 2 I Linguaggi di Programmazione
I File.
Espressioni condizionali
Introduzione alle basi di dati
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
EXCEL FORMATTAZIONE DATI.
CREARE UN SITO FACILMENTE!!! 1)TITOLO E TESTO 2)ANDARE A CAPO 3)CAMBIARE LE DIMENSIONI DEL TESTO 4)SEPARATORI 5)TESTO MODIFICATO 6)IMMAGINI 7)SFONDI 8)COLORI.
Primo Rapporto annuale sui siti istituzionali delle Regioni Lanalisi dellaccessibilità dei siti con Kendo Paolo Subioli.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
A D IET – P ROGETTO PER L ESAME DI L INGUAGGI E M ODELLI C OMPUTAZIONALI LS Prof. Enrico Denti Sviluppato da Fabio Bracci – AA 2009/2010.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Progettazione multimediale
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
Ordine degli Ingegneri di Bologna, 26 novembre 2010 Ordine degli Ingegneri di Bologna, 26 novembre /22 Gabriele Tonelli consulente CNR IRPI
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.
Linguaggio per la generazione di biglietti da visita
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.
Progettare un database
Linguaggi e modelli computazionali LS
Creare pagine web Xhtlm. Struttura di una pagina.
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012 V. Costamagna, F. Dotta, F. Barbano, L. Violanti, Oltikuka.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
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.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Linguaggi e modelli computazionali LS Manni Tiziano
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Modulo 6 Test di verifica
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Microsoft Word Interfaccia grafica
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.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
HTML. Pagina HTML Struttura Titolo Hello World! Paragrafo apre il documento html contiene informazioni come il titolo della pagina, i meta tags, la codifica.
Transcript della presentazione:

CineMan Linguaggio per la descrizione della programmazione di cinema Andrea Decorte Progetto di Linguaggi e Modelli Computazionali LS

Obiettivi Progettare un linguaggio per la descrizione della programmazione giornaliera di cinema Tale linguaggio deve essere completo ma comprensibile Lo scopo sarà quello di produrre una o più rappresentazioni direttamente utilizzabili dall’utente finale Locandina File PDF

Analisi del problema Si dovrà quindi realizzare un interprete per tale linguaggio che prenda in input una stringa di caratteri Inserita direttamente nella finestra del programma Caricata da un file di testo Esso dovrà effettuare l’analisi sintattica e di seguito quella semantica Nel caso tutte le operazioni abbiano esito positivo verrà prodotta una rappresentazione adeguata In caso di errore esso verrà segnalato all’utente nel modo più chiaro e dettagliato possibile

Caratteristiche linguaggio Linguaggio dovrà permettere di specificare Informazioni generali sul cinema indirizzo disponibilità parcheggi numero sale Orari di apertura Programmazione delle diverse sale Per ogni film in programmazione possibilità di inserire le informazioni di base (titolo, durata, divieti …) Flessibilità (più film per sala, sale chiuse)

Esempio di base CINEMA { NOME: "Cinecity" INDIRIZZO { VIA: "Nazionale" N: 1 Cap: 33040 CITTA: "Pradamano (UD)" } SALE: 1 TEL: 0432/2409500 SITO: "http://udine.cinecity.it" GIORNO: 26/04/2010 ORARIOAP: 15:00 01:00 SALA { NUMSALA: 1 POSTI: 470 FILM: "Scontro tra titani" SPETTACOLI: 17:30 20:00 22:30 DURATA: 101

<NUM: ([“0”-”9”])+> Alcuni dettagli <NUM: ([“0”-”9”])+> Ore (e intervalli) Due numeri separati dai due punti Date 3 numeri separati da barre Formato dd/MM/yyyy Controlli a livello semantico se data è valida Stringhe Racchiuse tra virgolette Possibilità di includere trattini e caratteri accentati (utili per i titoli dei film) Check formato data <STRINGA: (["A"-"Z","a"-"z","0"-"9","_","\'",".","à","è","é","ò","ù", "ç","ì","È","-"])+>

Grammatica (1/3) Notazione EBNF G = < VT, VN, P, S > Testo ::= "\"" ( <STRINGA> )+ ( <NUM> )* "\"" URI ::= "\"" ( "http://" )? ( <STRINGA> )+ "\"" Data ::= <NUM> "/" <NUM> "/" <NUM> Ora ::= <NUM> ":" <NUM> IntervalloDiTempo ::= Ora Ora Scope ::= <CINEMA> <LBRACE> ( Cinema )+ <RBRACE> Cinema ::= Dati Giorno OrarioApertura ( Sala )+ Dati ::= "NOME:" Testo Indirizzo NumeroSale (NumeroParcheggi)? Telefono ( "SITO:" URI )* NumeroSale ::= "SALE:" <NUM> NumeroParcheggi ::= "NUMPARCHEGGI:" <NUM> Telefono ::= "TEL:" <NUM> ( "/" )? ( <NUM> )? Stringhe e numeri Parentesi graffa Scope Uno o più cinema Non terminali Dati sul cinema Barra opzionale

Grammatica (2/3) Indirizzo ::= <INDIRIZZO> <LBRACE> Via Civico Cap Citta <RBRACE> Via ::= ( <VIA> | <PIAZZA> ) Testo Civico ::= <CIVICO> <NUM> Cap ::= <CAP> <NUM> Citta ::= "CITTA:" "\"" (<STRINGA>)+ (Provincia)?"\"" Provincia ::= "(" <PROV> ") " Giorno ::= "GIORNO:" Data OrarioApertura ::= "ORARIOAP:" (IntervalloDiTempo |<CHIUSO>) <VIA: "Via:" | "VIA:" | "VIALE:" | "CORSO:"> Indirizzo <PROV: ["A"-"Z"] ["A"-"Z"]> Data e orario di apertura Cinema chiuso

Assenti se sala è chiusa Grammatica (3/3) Assenti se sala è chiusa Sala ::= <SALA> <LBRACE> NumeroSala CapienzaSala (<CHIUSO>)? ( InfoFilm )* <RBRACE> NumeroSala ::= "NUMSALA:" <NUM> CapienzaSala ::= "POSTI:" <NUM> InfoFilm ::= "FILM:" Testo ( <FILM3D> )? "SPETTACOLI:" ( Ora )+ DurataFilm (<VM14>)? DurataFilm ::= "DURATA:" <NUM> Info sulla sala Info sul film

Tipologia di grammatica Grammatica di tipo 2 (context-free) secondo classificazione di Chomsky, cioè Il linguaggio generato è di tipo 3; no self- embedding, ovvero presenza di simboli non terminali autoinclusivi del tipo LL(1) perché nessuna produzione genera stringa vuota e gli insiemi degli starter symbols corrispondenti alla parte destra delle produzioni alternative di uno stesso metasimbolo sono tra loro disgiunti A → α con α є (VT U VN)* e A є VN A → β A δ dove A є VN e δ,β є V+ Condizione necessaria e sufficiente affinché una grammatica sia LL(1), poiché la grammatica è priva di ε – rules, è che per ogni metasimbolo, che appare alla sinistra di più produzioni, gli starter symbol corrispondenti alle parti destre delle produzioni alternative siano disgiunti. Si può dunque concludere che siamo in presenza di una GRAMMATICA LL(1) Per quanto riguarda le parentesi graffe, non vi è self-embedding: una sola parentesi iniziale ed una sola finale in entrambi i casi. Nessun livello di nesting di cui tenere conto. PDA deterministico->analisi top down

Schema funzionamento (1/2) ParseCinemaTokenManager Sequenza di caratteri Scanner Sequenza di token ParseCinema Abstract Syntax tree: elimino nodi non indispensabili AST Parser Rappresentazione della frase

Schema funzionamento (2/2) TreeVisitor AST Visitor = funzioni di interpretazione delle frasi dei linguaggi DataVisitor

Controlli semantici Nel DataVisitor vengono effettuati alcuni controlli sulla correttezza semantica Numero sale corrispondente a quelle descritte Nessun film proiettato in caso di chiusura Controllo sulla correttezza di orari e date Controllo su CAP Verifica che URL sia valida

Strumenti utilizzati Linguaggio Java (JDK 1.6.17) NetBeans 6.8 come ambiente di sviluppo JavaCC 5.0 per il parser, sfruttando JJDoc per la creazione automatica di documentazione Java Tree Builder (JTB) 1.3.2 per la creazione dei visitor di base Libreria iText 5.0.2 per la creazione di file PDF

Architettura (1/2) I package sono stati suddivisi in 2 parti Contengono le classi create in automatico dagli strumenti usati a partire dalla grammatica Il package parser contiene il parser prodotto in output da JavaCC I package visitor e syntaxtree vengono invece prodotti da JTB visitor: interfaccia del visitor base e implementazioni di default syntaxtree: una classe Java per ogni produzione della grammatica

Architettura (2/2) Questi package sono stati invece sviluppati manualmente Il package cineman contiene le classi per rappresentare la struttura in memoria Cinema.java Data.java Film.java Indirizzo.java Sala.java CinemaException.java

Visitor Nel package cinevisitor si trovano due implementazioni dell’interfaccia Visitor prodotta da JTB DataVisitor Si occupa di effettuare i controlli semantici necessari Produce una rappresentazione corrispondente TreeVisitor Richiamato se il DataVisitor non ha rilevato errori Produce una rappresentazione ad albero del contenuto Ciascun visitor realizza una visita di tipo depth first avvalendosi del meccanismo del double dispatch Un oggetto Visitor localizza la funzione di valutazione seguendo l’approccio funzionale e fornendo l’operazione chiamata di solito visit Sono possibili tante versioni della stessa funzione di valutazione quante le classi della tassonomia, seguendo l’approccio object-oriented (oveloading visit)

GUI (1/2) Nel package gui troviamo 2 classi per la visualizzazione dell’interfaccia grafica e una di supporto per il syntax highlighting Albero Area di input Area di output Input accettato correttamente Errore rilevato

Rappresentazione in stile locandina Rappresentazione in formato PDF GUI (2/2) Rappresentazione in stile locandina Rappresentazione in formato PDF

Prove effettuate Sono stati effettuati diversi test su programmazioni reali di cinema, anche prevedendo di avere in input più cinema Il sistema ha gestito correttamente sia errori sintattici: POSTO: 25 il parser segnala un errore indicando anche la riga in quanto si aspetta POSTI: Che errori semantici: Se definisco SALE: 1 ma poi ne inserisco 2, il DataVisitor mi segnala l’errore: Errore semantico: [Il numero delle sale definito non corrisponde a quello effettivo]

Limiti e sviluppi futuri Possibile estensione delle informazioni prese in considerazione (link a una scheda descrittiva di un film, prezzi e sconti…) Aggiunta di strumenti per facilitare inserimento dei dati e il loro aggiornamento Miglioramenti all’interfaccia Possibilità di visualizzare la locandina di più cinema Altri formati di output… Interfacciarsi con DB per recuperare info Linguaggio verboso