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.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Introduzione ad XML Mario Arrigoni Neri.
Estendere i linguaggi: i tipi di dato astratti
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
PHP.
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.
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
RB-alberi (Red-Black trees)
Il problema del dizionario
Algoritmi e Strutture Dati 20 aprile 2001
Cercare informazioni sul Web. 5-2 Organizzazione dellinformazione tramite gerarchie Classificazione gerarchica Linformazione è raggruppata in un piccolo.
Unità Didattica 2 I Linguaggi di Programmazione
Principi di scienza dell’alimentazione e di dietetica applicata
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
DBMS ( Database Management System)
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
SEZIONE STUDENTE HOMEPAGE STUDENTE Lo studente ha la sola facoltà di registrarsi e fare il test. Inizierà il suo lavoro cliccando su REGISTRATI (figura.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Dal menu in alto è possibile selezionare le specifiche pagine. Nella pagina di Gestione Gruppi si possono aggiungere nuovi gruppi e visualizzare lelenco.
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Descrizione Semantica ad Alto Livello di Ambienti Virtuali in X3D
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
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.
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Il World Wide Web Lidea innovativa del WWW è che esso combina tre importanti e ben definite tecnologie informatiche: Documenti di tipo Ipertesto. Sono.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
Presentazione del problema Obiettivo: Lapplicazione di Search of Sematic Services permette di ricercare sevizi semantici, ossia servizi a cui sono associati.
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.
Amministrazione della rete: web server Apache
Linguaggi e modelli computazionali LS Manni Tiziano
Programma di Informatica Classi Prime
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Internet e HTML Diffusione di informazioni mediante la rete Internet.
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.
Reti di calcolatori LS1 Service Middleware Reti di calcolatori LS progetto di Andrea Belardi Infrastruttura dedicata alla gestione di servizi disponibili.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Servizi Internet Claudia Raibulet
B IBLIO S ERVICE consultazione di articoli online Anna Riccioni Progetto per il corso di Reti di Calcolatori L-S Anno Accademico
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
SnippetSearch Database di snippet bilanciato e replicato di Gianluigi Salvi Reti di calcolatori LS – Prof. A.Corradi.
EPG di Metodologia della ricerca e Tecniche Multivariate dei dati A.A
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

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

I DEA P ROGETTUALE (1) Lidea progettuale è la definizione di un linguaggio che consenta di descrivere una dieta alimentare. Però un semplice elenco degli alimenti non ha un gran interesse: sarebbe molto più utile poter fornire anche delle informazioni sulla dieta alimentare. Per ottenere delle statistiche risulta necessario caratterizzare ogni alimento presente nella dieta con le proprie informazioni sui nutrienti più importanti. Per fare questo, si potrebbe inserire nella dieta non solo il nome dellalimento e la sua quantità, ma anche tutti i suoi valori questo comporta una replicazione delle informazioni nel caso in cui un alimento sia presente più volte nella dieta alimentare

I DEA P ROGETTUALE (2) Si potrebbe realizzare un database degli alimenti, di supporto alla dieta alimentare, contenente tutti i dati sui nutrienti più rilevanti ai fini dietetici, in modo da inserire nella dieta per ogni alimento, non più il nome e la lista dei nutrienti, ma solamente un codice per risalire al medesimo alimento nel database di supporto Non vi è alcuna replicazione dinformazione In base alle scelte progettuali quindi, si è scelto di definire non solo un linguaggio per la descrizione di un dieta alimentare ma anche di un linguaggio che consenta di descrivere un database alimentare.

F ASI DI REALIZZAZIONE Definizione di unopportuna grammatica e di un linguaggio per descrivere un database e una dieta alimentare; Realizzazione del Parser e dellInterprete; Implementazione del sistema con laggiunta di GUI; Collaudo.

V ERSO LA G RAMMATICA (1) Durante la realizzazione del progetto, la grammatica ha subito dei cambiamenti al fine di rendere il linguaggio di semplice utilizzo (pensando ad un ipotetico utilizzatore finale). Per far ciò si sono eliminate le parti superflue e resa la grammatica più flessibile possibile (per fare fronte alla soggettività incontrata nel determinare equazioni corrette per il calcolo delle statistiche alimentari). Ricordando che G = VT e linsieme dei simboli terminali VN è linsieme dei simboli non terminali P è linsieme delle produzioni della grammatica S rappresenta lo scopo

V ERSO LA G RAMMATICA (2) ::= begin: ( | ) end. ::= database: enddatabase. ::= category: endcategory. ::= ::=(food: endfood.)+ ::= ( ( )+ )+ ::= composition: ::= ( (, ) )+ ::= user: enduser. ::= data: ( )+ ::= ::= diet: ( )+ enddiet. ::= ::= ( )+ Il linguaggio risulta troppo complicato per essere poi effettivamente usato.

G RAMMATICA (1) Per una questione di flessibilità, i token sono stati ridotti al minimo: ::=[0 - 9] ([0 - 9])* | [0 - 9] ([0 - 9])*. ([0 - 9])* ::= [a - z, A - Z, \, -,., 0 - 9] ([a - z, A - Z, \, -,., 0 - 9])*

G RAMMATICA (2) ::= | ::= database ( )+ ( )+ ::= category ( )+ ( )+ ::= ( )+ ::= user ( )+ / / kg cm ::= diet ( )+ ::= week ( )+ ::= day ( )+ ::= ( )+ : ( )+ ::= g Grammatica Database Grammatica Dieta

G RAMMATICA D ATABASE (1) ::= | ::= database ( )+ ( )+ ::= category ( )+ ( )+ ::= ( )+ Possiamo osservare che: il database ha una sua descrizione ogni categoria è caratterizzata da un codice numerico e un nome ogni alimento è caratterizzato da un codice numerico, un nome e quattro valori numerici che si riferiscono ai tre nutrienti principali e allenergia fornita dallalimento (questi valori si riferiscono, come è usuale in tutti i database alimentari e alle specifiche presenti anche sui prodotti che comunemente comperiamo a supermercato, a 100 g di prodotto)

G RAMMATICA D ATABASE (2) ::= | ::= database ( )+ ( )+ ::= category ( )+ ( )+ ::= ( )+ Esempio: database INRAN category 01 Cereali e Derivati 960 Biscotti alla soia descrizione codice nome codice nome proteine lipidi (grassi) carboidrati energia

G RAMMATICA D IETA (1) ::= | ::= user ( )+ / / kg cm ::= diet ( )+ ::= week ( )+ ::= day ( )+ ::= ( )+ : ( )+ ::= g Possiamo osservare che: la dieta viene preceduta dai dati riguardanti lutente (nome, data di nascita, sesso, peso, altezza, stile di vita) Ogni pasto è caratterizzato da un nome e un orario Ogni alimento è caratterizzato da due valori numerici, un codice (con il quale si possono recuperare informazioni sullalimento nel database) e la quantità (in grammi).

G RAMMATICA D IETA (2) ::= | ::= user ( )+ / / kg cm Esempio: user Paolo Grassi 20/08/1986 m 61 kg 174 cm 1 nome utente data di nascita sesso peso altezza stile di vita

G RAMMATICA D IETA (3) ::= | ::= diet ( )+ ::= week ( )+ ::= day ( )+ ::= ( )+ : ( )+ ::= g Esempio: diet week day Colazione 8: g nome pasto orario codice alimento quantità

G RAMMATICA : OSSERVAZIONI Come accennato in precedenza, i token sono stati minimizzati ai soli e per una scelta progettuale: Questo progetto è stato più volte modificato cercando di dare una più ampia configurazione allutente finale: Non cè vincolo sul nome della categoria del database Non cè vincolo sul nome del pasto Facilità dintegrazione di altre lingue Scelta tra Domenica o Lunedì come primo giorno della settimana Gestione del calcolo delle calorie (stile di vita)

La grammatica è di Tipo 2 (context-free) secondo la classificazione di Chomsky, in quanto tutte le produzioni risultano essere nella forma: Il linguaggio generato risulta essere di Tipo 3 (regolare) poiché la grammatica non contiene self-embedding. P ROPRIETÀ DELLA GRAMMATICA

R ICONOSCITORE Lunica produzione alternativa presente nella grammatica è: e i relativi Starter Symbols sono: Da sui possiamo assumere che la grammatica è LL(1): Infatti, non solo la condizione necessaria affinché la grammatica sia LL(1) è verificata ma, poiché nessuno dei metasimboli può generare la stringa vuota, tale condizione è anche sufficiente e non si necessita di calcolare i Director Symbols. Poiché la grammatica è LL(1): Le frasi vengono analizzate Left-to-Right applicando la left most derivation (derivazione canonica sinistra) e basta un solo simbolo della frase per scegliere con certezza la produzione opportuna;

S TRUMENTI UTILIZZATI JavaCC 5.0 Genera automaticamente, a partire dalla grammatica: Il parser; Il lexer (scanner) per il riconoscimento dei token; Le classi per lanciare eventuali errori lessicali e\o sintattici; JTB Genera le classi necessarie a creare lalbero sintattico AST (una classe per ogni produzione della grammatica); Implementa Visitor che operano depth-first; Eclipse 3.6.1

S TRUTTURA F INALE (1) Partendo dai due Package creati: database Database Category FoodCategory user DayDiet Diet FoodDiet Mean User WeekDiet

S TRUTTURA F INALE (2) visitor syntaxtree parser DietVisitor TreeVisitor ControlVisitor user database services gui EditorFrame DietFrame exception Fornisce metodi per le operazioni sui file.txt e.xml Per gestire gli errori semantici come delle eccezioni

S TRUTTURA F INALE – P ARSER Il package parser contiene le classi relative al Lexer, al Parser ed alle eccezioni sintattiche Parser: Realizzato da JavaCC; Rapporto Client/Server col Lexer; Restituisce lalbero generato, in modo che i vari visitor possano visitarlo ed interpretarlo. Il package syntaxtreecontiene le classi che rappresentano i nodi dellalbero, in particolare una per ogni metasimbolo della grammatica. syntaxtree parser

S TRUTTURA F INALE (2) visitor syntaxtree parser DietVisitor TreeVisitor ControlVisitor user database services gui EditorFrame DietFrame exception

S TRUTTURA F INALE – V ISITOR La classe DepthFirstVisitor, generata da JTB, è stata estesa da tre sottoclassi: ControlVisitor visita lAPT e viene lanciato per primo poiché verifica la correttezza semantica, gestendo gli errori semantici come eccezioni; TreeVisitor visita lAPT e ne fornisce una rappresentazione grafica sotto forma di albero (la quale verrà passata allinterfaccia grafica EditorFrame.java); DietVisitor visita lAPT e fornisce tutte le statistiche necessarie per analizzare la dieta alimentare inserita (le quali verranno passate alinterfaccia grafica DietFrame.java) visitor DietVisitor TreeVisitor ControlVisitor

C ONTROLLO S EMANTICO Il visitor ControlVisitor, a partire dallAPT, verifica la correttezza semantica: infatti la sola correttezza sintattica non è sufficiente affinché la dieta o il database alimentare inserito possano essere considerati corretti: Ma quali sono le regole semantiche?

R EGOLE S EMANTICHE – D ATABASE (1) 01 Cereali 960 Biscotti alla soia Biscotti frollini Legumi 4010 Ceci in scatola Ceci secchi crudi Non si possono avere due o più categorie con lo stesso codice

R EGOLE S EMANTICHE – D ATABASE (2) 01 Cereali 960 Biscotti alla soia Biscotti frollini Cereali 4010 Ceci in scatola Ceci secchi crudi Non si possono avere due o più categorie con lo stesso nome

R EGOLE S EMANTICHE – D ATABASE (3) 01 Cereali 960 Biscotti alla soia Biscotti frollini Legumi 960 Ceci in scatola Ceci secchi crudi Non si possono avere due o più alimenti con lo stesso codice

R EGOLE S EMANTICHE – D IETA (1) La dieta può essere composta da un minimo di 1 ad una massimo di 52 settimana

R EGOLE S EMANTICHE – D IETA (2) Ogni settimana è composta da 7 giorni e lordine dei giorni va rispettato

R EGOLE S EMANTICHE – D IETA (3) Ogni giorno può contenere da un minimo di un pasto ad un massimo di 7 pasti

R EGOLE S EMANTICHE – D IETA (4) Non si può avere in un giorno due o più pasti con lo stesso orario.

R EGOLE S EMANTICHE – D IETA (5) Non si può avere in un pasto due o più alimenti con lo stesso codice.

S TRUTTURA F INALE (2) visitor syntaxtree parser DietVisitor TreeVisitor ControlVisitor user database services gui EditorFrame DietFrame exception

I NTERFACCIA G RAFICA – E DITOR F RAME gui EditorFrame DietFrame EditorFrame

I NTERFACCIA G RAFICA – E DITOR F RAME EditorFrame (Database) Esito dellanalisi lessicale, sintattica e semantica. (ControlVisitor) Linguaggio da analizzare Rappresentazione grafica sotto forma dalbero del linguaggio analizzato (TreeVisitor)

I NTERFACCIA G RAFICA – E DITOR F RAME EditorFrame (Dieta)

I NTERFACCIA G RAFICA – D IET F RAME DietFrame

N OTE SUL P ROGETTO (1) Nato da unidea di oramai quasi due anni fa, in questo lasso di tempo è stato più volte riprogettato ripartendo proprio dalla grammatica: per quanto riguarda le regole del database, essendo questultimo ben strutturato e definito, non ha ricevuto modifiche sostanziali la parte invece dedicata alla descrizione dellutente e della dieta è stata più volte modificata per cercare di rendere il linguaggio più familiare e più facilmente utilizzabile da un ipotetico utente finale e per far fronte alla facile possibilità rendere la grammatica resistente alle diverse idee in ambito dietistico. Lultimo stadio di questa evoluzione ha portato alleliminazione di tutti i token specifici (come,,,, …) proprio per alleggerire la grammatica e darle maggiore elasticità; Questo però ha portato ad un maggior controllo semantico da parte di ControlVisitor (la maggior parte dei valori utilizzati per effettuare i controlli sono inseriti nel file Conf.java).

N OTE SUL P ROGETTO (2) Oltre alla visualizzazione grafica data dallinterfaccia DietFrame, la dieta, con i relativi grafici delle statistiche, può essere visualizzata anche mediante web browser: prima viene salvata in un file xml poi trasformata mediante foglio di stile xslt e infine avviene la validazione del documento (XSD) È presente anche lo strumento di Log.

C OLLAUDO Per il collaudo del sistema sono stati scritti alcuni significativi file di codice per verificare: la creazione corretta dellalbero sia per il database sia per la dieta Segnalazione di errori sintattici Segnalazione di errori semantici Corretta visualizzazione del database e della dieta

S VILUPPI FUTURI Creare uninterfaccia per la configurazione del sistema; Migliorare le statistiche utilizzando equazioni, riguardanti la dieta alimentare, più complesse e complete; Inserire la gestione di più nutrienti (non solo proteine, lipidi e carboidrati); Aumentare la gestione dei dati utente.

PROTOTIPO

C OLLAUDO Database Errori semantici riguardanti il linguaggio di un database alimentare. Utente Errori semantici riguardanti il linguaggio di una dieta alimentare (sezione utente). Dieta Errori semantici riguardanti il linguaggio di una dieta alimentare (sezione dieta).

C OLLAUDO D ATABASE FoodAlreadyInDatabase Inserimento di un alimento già presente nel database CategoryNameAlreadyInDatabase Inserimento di una categoria con un nome già presente nel database CategoryCodeAlreadyInDatabase Inserimento di una categoria con un codice già presente nel database

F OOD A LREADY I N D ATABASE

C ATEGORY N AME A LREADY I N D ATABASE

C ATEGORY C ODE A LREADY I N D ATABASE

C OLLAUDO U TENTE IncorrectDate Inserimento di una data non corretta IncorrectSex Inserimento di un carattere o parola non corretta per il sesso IncorrectWeight Inserimento per il peso di un valore non corretto IncorrectHeight Inserimento per laltezza di un valore non corretto IncorrectLifestyle Inserimento per lo stile di vita di una parola non corretta

C OLLAUDO D IETA DatabaseNotLoaded Inserimento di una dieta alimentare senza la presenza di un database IncorrectWeek Inserimento di una settimana non composta di 7 giorni nella dieta WeekAlreadyComplete Inserimento di un giorno in una settimana già composta da 7 giorni IncorrectTime Inserimento di un pasto con un orario errato MeanAlreadyInDay Inserimento di un pasto con un orario già presente nel giorno di dieta

C OLLAUDO D IETA FoodNotInDatabase Inserimento di un alimento non presente nel database FoodAlreadyInMean Inserimento di un alimento con codice già presente nel pasto NumberOfWeeksInDiet Inserimento di una settimana in una dieta già completa NumberOfMeansInDay Inserimento di un pasto in un giorno già completo NumberOfFoodsInMean Inserimento di un alimento in un pasto già completo