CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.

Slides:



Advertisements
Presentazioni simili
Introduzione ad XML Mario Arrigoni Neri.
Advertisements

Il Software.
Informatica Recupero debito quarto anno Terzo incontro.
Analizzatori Lessicali con JLex
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Parser Bottom UP Giuseppe Morelli. Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di.
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Unità Didattica 2 I Linguaggi di Programmazione
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
I SISTEMI OPERATIVI.
Da Problema a Programmazione
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
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
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.
Linguaggio per la generazione di biglietti da visita
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.
Lo sviluppo del software e i linguaggi di programmazione
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Obiettivi di Design Rappresentano, in un prodotto software, le basi del successivo sviluppo del prodotto, perché, su di esse, si fondano le scelte prese.
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
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.
Protocollo Informatico Trentino
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.
Lezione 3 Struttura lessicale del linguaggio
Microsoft Word Interfaccia grafica
Word: gli strumenti di formattazione
Manuale della Qualità e Controllo del Processo
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
TORTA GRAN PARADISO AL CIOCCOLATO CHOCOLATE CAKE «GREAT PARADISE»
Ingredienti Ingredients - 8 uova - 8 eggs g di zucchero g of sugar g di farina setacciata g of flour - 2 bustine di lievito -
Microsoft Access Chiavi, struttura delle tabelle.
Il software Componente del computer costituita dai: –programmi di base per la gestione del sistema –programmi applicativi per l’uso del sistema Queste.
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.
Calendar Generator Progetto Linguaggi e Modelli Computazionali LS Docente: Enrico Dentidi: Alberto Renzi.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
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.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Guida alla navigazione nella piattaforma e nei corsi eLearning
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Le basi di dati.
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti

Obiettivi Creare un ambiente che permetta la scrittura di ricette di torte Realizzare una grammatica che ci permetta di definire senza ambiguità, mediante delle notazioni formali, le frasi del linguaggio che vogliamo generare. Il linguaggio deve essere: –comprensibile –di facile utilizzo per ogni tipologia di utente Sviluppare l’interprete: –che accetti in ingresso una stringa di caratteri, riconosca se la stringa è una f rase del linguaggio (analisi sintattica), in caso positivo esegua l’analisi sema ntica. Riprodurre in formato audio la ricetta inserita: –utilizzando un sintetizzatore vocale

Grammatica (1/4) ::=Information Ingredients Preparation ::= ; ; ; ::= ( ;)+ :: = ;( ;)* ; ;[ ;][ ;] Struttura ricetta Scope

Grammatica (2/4) ::= Ingredient(, ) ::= grams | ::= Name( ) ::= Makes( ) ::= Difficulty( ) ::= easy | medium | hard Informazioni torta Ingredienti torta

::= Mix( {, }) ::= Add( {, }) ::= Transfer( ) ::= Bake( ) ::= Fill( {, }) ::= Decorate( {, }) ::= cake pan ::=, ::= round | rectangular | square ::= centigrade ::= minutes ::= Grammatica (3/4) Preparazione torta

Grammatica (4/4) ::= ( )+ Stringhe di input Numeri maggiori di zero

Esempio di ricetta(1/2) INFORMATION Name (Black Forest); Makes (8); Difficulty (medium); INGREDIENTS Ingredient (6,eggs); Ingredient (grams 250, sugar); Ingredient (grams 100, seed oil); Ingredient (grams 100, milk); Ingredient (grams 200, flour); Ingredient (grams 120, cocoa); Ingredient (grams 200, nutella); Ingredient (grams 250, whipped cream); Ingredient (grams 80, chocolate chips); Ingredient (1, sachet yeast); Ingredient (1, sachet vanillin); ::= ; ; ; ::= ( ;)+

Esempio di ricetta(2/2) PREPARATION Mix (eggs, sugar); Add (seed oil, milk); Add (cocoa); Add (flour, sachet yeast); Add (sachet vanillin); Transfer (round cake pan); Bake (180 centigrade, 40 minutes); Fill (whipped cream, nutella); Decorate (whipped cream, chocolate chips); In questo esempio ci sono anche le parti opzionali come Fill e Decorate Qui Add è stato utilizzato più volte :: = ;( ;)* ; ;[ ;][ ;]

Grammatica e Linguaggio (1/2) Grammatica: la grammatica è di tipo 2 (context free) secondo la classificazione di Chomsky. Infatti ci sono produzioni vincolate alla forma: A → α con α є (VT U VN)* ed A є VN Linguaggio: il linguaggio generato è di tipo 3 (linguaggio regolare) in quanto è possibile notare che la grammatica non presenta self-embedding, ovvero non prevede simboli non terminali autoinclusivi del tipo: A → β A δ dove A є VN e δ,β є V +

La grammatica è priva di ε – rules. Il linguaggio quindi non prevede l’uso della stringa vuota, neanche a livello di scope, anche perché una ricetta vuota non avrebbe alcun senso. 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) NOTA: Nel caso ci fosse stata la stringa vuota si sarebbe potuto ricorrere ad una tecnica di riscrittura in grado di eliminarla da tutte le produzioni, al più sarebbe comparsa solo nello scope (S  ε, dove però S non compare nella parte destra di alcuna produzione). Grammatica e Linguaggio(2/2)

Schema di funzionamento: Correttezza lessicale e Correttezza sintattica Scanner AST Parser Sequenza di caratteri Sequenza di token Analisi Lessicale: vengono i ndividuate le singole parole ( token) di una frase Analisi Sintattica: si verifica che una frase sia costruita secondo le regole grammaticali che descrivono il linguaggio Rappresentazione della frase

La classe DepthFirstVisitor (generata da JTB) è stata estesa da due sottoclassi: –TreeVisitor: nel momento in cui si ha la correttezza sintattica e semantica, crea una rappresentazione sotto forma di albero della ricetta inserita –ReadVisitor: a seguito della correttezza sintattica e semantica, crea una rappresentazione testuale della ricetta che sarà poi utilizzata da un gestore grafico esterno per riprodurre sotto forma di audio la ricetta. Il gestore grafico si occupa di gestire il sintetizzatore vocale. Questa scelta permette di disaccoppiare il gestore grafico, realizzato come Singleton, dal visitor. Visitor

Schema di funzionamento: Correttezza semantica TreeVisitor ReadVisitor Rappresentazione testuale AST

Semantica: Information: –Il numero di porzioni deve essere compreso nel range di valori: Ingredients: –Ogni ingrediente inserito non deve superare i 3000 grammi Preparation: –La temperatura del forno deve essere compresa nel range: gradi –Il tempo di cottura è compreso fra i 20 e 120 minuti Semantica

Strumenti utilizzati Linguaggio di programmazione: Java jdk 1.6.0_16 Ambiente di sviluppo: Eclipse Galileo Implementazione Java Speech: FreeTTS versione Generazione del parser e dello scanner: JavaCC 4.2 Generazione automatica delle classi necessarie per creare l’APT (o AST) e implementazione di visitor che operano DepthFirst: JTB Generazione della documentazione: JJDoc

Architettura: Packages syntaxtree: classi generate da JTB per la costruzione dell’AST visitor: classi generate da JTB e visitor creati su estensione della classe DepthFirstVisitor parser: classi relative allo scanner e al parser generate da JavaCC gui: classi grafiche cake: classi per l’elaborazione utility: classi di appoggio Add.java Bake.java CakePan.java … DepthFirstVisitor.java TreeVisitor.java ReadVisitor.java … CakeParser.java Token.java … CakeFrame.java CakePanel.java TreePanel.java … Manager.java CakeRecipe.java … TxtFileReader.java TxtFilter.java …

Classi generate da JavaCC Lexer: contiene il metodo getNextToken(), il quale implementa l’ASF deterministico che riconosce i token descritti dalle espres sioni regolari Parser: chiama il lexer ogni volta che necessita del prossimo token. Cont iene un metodo per ogni simbolo non ter minale presente nella specifica della gra mmatica Ogni chiamata al metodo getNextToken() re stituisce un oggetto di questa classe

Classi Visitor Automaticamente generato da JTB Pattern visitor: Ciascun visitor realizza una visita di tipo depth-first avvalendosi del meccanismo double dispatch. I visitor hanno un metodo visit per ogni classe rappresentante un nodo dell’ APT (risultante dall’analisi intermedia del Parser). Le classi visitate accetteranno la visita richiamando il metodo visit con argomentio “this”.

Interfaccia Grafica (1/4) Form necessaria per inserire le informazioni riguardanti la torta Al momento della pressione del tasto OK si verifica l’inserimento dei dati nei vari ca mpi Insert bar: permette all’utente di introdurre le informazioni generali della torta, la lista degl i ingredienti e il procedimento

Interfaccia Grafica (2/4) Form necessaria per inserire gli ingredienti Al momento della pressione del tasto OK o NEXT si verifica l’inserimento dei dati nei vari campi

Interfaccia Grafica (3/4) Form necessaria per inserire il procedimento Al momento della pressione del tasto OK si verifica l’inserimento dei dati nei vari ca mpi

Interfaccia Grafica (4/4) L’utente può così ascoltare la ri cetta inserita

Test Sono stati eseguiti diversi test al fine di verificare la correttezza del progetto: –Inserimento di frasi non corrette sintatticamente: Makes (0); il parser risponde con un messaggio di errore indicando la riga e la colonna in cui è presente l’errore, infatti sintatticamente è sbagliata poiché i numeri devono essere tutti maggiori di zero. Ingredient (gram 200, flour); il parser risponde con un messaggio di errore poiché si aspetta grams e non gram. –Inserimento di frasi corrette sintatticamente ma non semanticamente: Makes (25); il parser fa il check della frase e dice che va tutto bene sintatticamente ma nel momento in cui si attiva uno dei due visitor abbiamo un errore: il numero di porzioni non rientra nel range prestabilito. Ingredient (grams 4500, flour); semanticamente sbagliata, supera il limite massimo consentito per la quantità. Sono stati effettuati anche diversi test per quanto riguarda l’interfaccia grafica affinchè si riesca a far fronte ad eventuali errori dell’utente.

Sviluppi futuri Poter inserire non solo ricette di torte ma ricette di dolci in generale Poter inserire più ricette contemporaneamente Memorizzare la voce del sintetizzare in modo da creare un piccolo archivio di file audio E tanto altro ancora…

FINE