a d iet – p rogetto per l esame di l inguaggi e m odelli c omputazionali ls prof. enrico denti...
TRANSCRIPT
![Page 1: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/1.jpg)
ADIET – PROGETTO PER L’ESAME DI LINGUAGGI E MODELLI COMPUTAZIONALI LSProf. Enrico Denti
Sviluppato da Fabio Bracci – AA 2009/2010
![Page 2: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/2.jpg)
IDEA PROGETTUALE (1)
?
Dieta
L’idea 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 dell’alimento 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
![Page 3: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/3.jpg)
IDEA PROGETTUALE (2)
… ProteineLipidi
Carboidrati …
Database
Dieta
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
d’informazione 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.
![Page 4: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/4.jpg)
FASI DI REALIZZAZIONE
Definizione di un’opportuna grammatica e di un linguaggio per descrivere un database e una dieta alimentare;
Realizzazione del Parser e dell’Interprete; Implementazione del sistema con l’aggiunta
di GUI; Collaudo.
![Page 5: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/5.jpg)
VERSO LA GRAMMATICA (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, VN, P, S > VT e l’insieme dei simboli terminali VN è l’insieme dei simboli non terminali P è l’insieme delle produzioni della grammatica S rappresenta lo scopo
![Page 6: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/6.jpg)
VERSO LA GRAMMATICA (2) <ADiet> ::= begin: ( <Database> | <User>) end.
<Database> ::= database: <Categories> enddatabase. <Categories> ::= category: <Category> endcategory. <Category> ::= <CATEGORY_NAME> <FoodsCategory> <FoodsCategory>::=(food: <FoodCategory> endfood.)+ <FoodCategory> ::= (<NUMBER> (<WORD>)+ <Property>)+ <Property> ::= composition: <Composition> <Composition> ::= ( ( <NUTRIEN> , <NUMBER> ) )+
<User> ::= user: <Data> <Diet> enduser. <Data> ::= data: (<WORD>)+ <SEX> <PhisicalData> <PhisicalData> ::= <BIRTHDAY> <WEIGHT> <HEIGHT> <Diet> ::= diet: (<Day>)+ enddiet. <Day> ::= <DAY> <Means> <Means> ::= (<TIME> <FoodDiets>)+ <FoodDiets> ::= (<NUMBER> <NUMBER>)+
Il linguaggio risulta troppo complicato per
essere poi effettivamente usato.
![Page 7: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/7.jpg)
GRAMMATICA (1)
Per una questione di flessibilità, i token sono stati ridotti al minimo: <NUMBER> ::=[0 - 9] ([0 - 9])* |
[0 - 9] ([0 - 9])* . ([0 - 9])* <WORD> ::= [a - z, A - Z, \ , - , . , 0 - 9]
([a - z, A - Z, \ , - , . , 0 - 9])*
![Page 8: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/8.jpg)
GRAMMATICA (2) <ADiet> ::= <Database> | <User> <Diet>
<Database> ::= database (<WORD>)+ (<Category>)+ <Category> ::= category <NUMBER> (<WORD>)+
(<FoodCategory>)+ <FoodCategory> ::= <NUMBER> (<WORD>)+ <NUMBER>
<NUMBER> <NUMBER> <NUMBER>
<User> ::= user (<WORD>)+<NUMBER> / <NUMBER> / <NUMBER> <WORD> <NUMBER> kg <NUMBER> cm<NUMBER>
<Diet> ::= diet (<Week>)+ <Week> ::= week (<Day>)+ <Day> ::= day (<Meal>)+ <Meal> ::= (<WORD>)+ <NUMBER> : <NUMBER> (<FoodDiet>)+ <FoodDiet> ::= <NUMBER> <NUMBER> g
Grammatica Database
Grammatica Dieta
![Page 9: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/9.jpg)
GRAMMATICA DATABASE (1) <ADiet> ::= <Database> | <User> <Diet>
<Database> ::= database (<WORD>)+ (<Category>)+ <Category> ::= category <NUMBER> (<WORD>)+
(<FoodCategory>)+ <FoodCategory> ::= <NUMBER> (<WORD>)+
<NUMBER> <NUMBER> <NUMBER> <NUMBER> 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 all’energia fornita dall’alimento (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)
![Page 10: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/10.jpg)
GRAMMATICA DATABASE (2)
<ADiet> ::= <Database> | <User> <Diet>
<Database> ::= database (<WORD>)+ (<Category>)+
<Category> ::= category <NUMBER> (<WORD>)+ (<FoodCategory>)+
<FoodCategory> ::= <NUMBER> (<WORD>)+ <NUMBER> <NUMBER> <NUMBER> <NUMBER>
Esempio:database INRANcategory 01 Cereali e Derivati960 Biscotti alla soia 11.5 6.1 70.8 366
descrizione
codice nome
codice nome proteinelipidi (grassi)carboidratienergia
![Page 11: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/11.jpg)
GRAMMATICA DIETA (1) <ADiet> ::= <Database> | <User> <Diet>
<User> ::= user (<WORD>)+<NUMBER> / <NUMBER> / <NUMBER> <WORD> <NUMBER> kg <NUMBER> cm<NUMBER>
<Diet> ::= diet (<Week>)+ <Week> ::= week (<Day>)+ <Day> ::= day (<Meal>)+ <Meal> ::= (<WORD>)+ <NUMBER> : <NUMBER> (<FoodDiet>)+ <FoodDiet> ::= <NUMBER> <NUMBER> g
Possiamo osservare che: la dieta viene preceduta dai dati riguardanti l’utente (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 sull’alimento nel database) e la quantità (in grammi).
![Page 12: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/12.jpg)
GRAMMATICA DIETA (2) <ADiet> ::= <Database> | <User> <Diet>
<User> ::= user (<WORD>)+<NUMBER> / <NUMBER> / <NUMBER> <WORD> <NUMBER> kg <NUMBER> cm<NUMBER>
Esempio:user Paolo Grassi20/08/1986m61 kg174 cm1
nome utente
data di nascita
sessopeso
altezza
stile di vita
![Page 13: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/13.jpg)
GRAMMATICA DIETA (3)
<ADiet> ::= <Database> | <User> <Diet>
<Diet> ::= diet (<Week>)+ <Week> ::= week (<Day>)+ <Day> ::= day (<Meal>)+ <Meal> ::= (<WORD>)+ <NUMBER> :
<NUMBER> (<FoodDiet>)+ <FoodDiet> ::= <NUMBER> <NUMBER> g
Esempio:diet week day Colazione 8:00 135020 125 g
nome pastoorariocodice alimentoquantità
![Page 14: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/14.jpg)
GRAMMATICA: OSSERVAZIONI
Come accennato in precedenza, i token sono stati minimizzati ai soli <NUMBER> e <WORD> per una scelta progettuale: Questo progetto è stato più volte modificato
cercando di dare una più ampia configurazione all’utente finale: Non c’è vincolo sul nome della categoria del database Non c’è vincolo sul nome del pasto Facilità d’integrazione di altre lingue Scelta tra Domenica o Lunedì come primo giorno della
settimana Gestione del calcolo delle calorie (stile di vita)
![Page 15: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/15.jpg)
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.
PROPRIETÀ DELLA GRAMMATICA
![Page 16: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/16.jpg)
RICONOSCITORE L’unica 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;
![Page 17: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/17.jpg)
STRUMENTI 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 1.4.3 Genera le classi necessarie a creare l’albero
sintattico AST (una classe per ogni produzione della grammatica);
Implementa Visitor che operano depth-first; Eclipse 3.6.1
![Page 18: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/18.jpg)
STRUTTURA FINALE (1)
Partendo dai due Package creati:
database
Database Category FoodCategory
user
DayDiet Diet FoodDiet
Mean User WeekDiet
![Page 19: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/19.jpg)
STRUTTURA FINALE (2)
visitor
syntaxtree parser
DietVisitor TreeVisitor ControlVisitor
userdatabase
services
guiEditorFrame
DietFrame
exception
Fornisce metodi per le operazioni sui file .txt e .xml
Per gestire gli errori
semantici come delle eccezioni
![Page 20: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/20.jpg)
STRUTTURA FINALE – PARSER
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 l’albero generato, in modo che i vari visitor
possano visitarlo ed interpretarlo.
Il package “syntaxtree”contiene le classi che rappresentano i nodi dell’albero, in particolare una per ogni metasimbolo della grammatica.
syntaxtree parser
![Page 21: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/21.jpg)
STRUTTURA FINALE (2)
visitor
syntaxtree parser
DietVisitor TreeVisitor ControlVisitor
userdatabase
services
guiEditorFrame
DietFrame
exception
![Page 22: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/22.jpg)
STRUTTURA FINALE – VISITOR
La classe DepthFirstVisitor, generata da JTB, è stata estesa da tre sottoclassi: ControlVisitor
visita l’APT e viene lanciato per primo poiché verifica la correttezza semantica, gestendo gli errori semantici come eccezioni;
TreeVisitor visita l’APT e ne fornisce una rappresentazione grafica
sotto forma di albero (la quale verrà passata all’interfaccia grafica EditorFrame.java);
DietVisitor visita l’APT e fornisce tutte le statistiche necessarie per
analizzare la dieta alimentare inserita (le quali verranno passate al’interfaccia grafica DietFrame.java)
visitor
DietVisitor TreeVisitor ControlVisitor
![Page 23: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/23.jpg)
CONTROLLO SEMANTICO
Il visitor ControlVisitor, a partire dall’APT, 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?
![Page 24: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/24.jpg)
REGOLE SEMANTICHE – DATABASE (1)
01Cereali
•960Biscotti alla soia11.5 6.1 70.8366
•900Biscotti frollini7.2 13.8 73.742901
Legumi
•4010Ceci in scatola6.7 2.3 13.9100
•4000Ceci secchi crudi20.9 6.3 46.9316
Non si possono
avere due o più categorie con lo stesso
codice
![Page 25: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/25.jpg)
REGOLE SEMANTICHE – DATABASE (2)
01Cereali
•960Biscotti alla soia11.5 6.1 70.8366
•900Biscotti frollini7.2 13.8 73.742902
Cereali
•4010Ceci in scatola6.7 2.3 13.9100
•4000Ceci secchi crudi20.9 6.3 46.9316
Non si possono
avere due o più categorie con lo stesso
nome
![Page 26: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/26.jpg)
REGOLE SEMANTICHE – DATABASE (3)
01Cereali
•960Biscotti alla soia11.5 6.1 70.8366
•900Biscotti frollini7.2 13.8 73.742902
Legumi
•960Ceci in scatola6.7 2.3 13.9100
•4000Ceci secchi crudi20.9 6.3 46.9316
Non si possono
avere due o più alimenti con lo stesso
codice
![Page 27: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/27.jpg)
REGOLE SEMANTICHE – DIETA (1)
Settimana
Lunedì
Colazione7:00
500 50 g
877 100 g
Pranzo12:00
Cena19:30
…
Domenica
Settimana
Lunedì
…
Domenica
…
Pranzo13:00
748 50 g
821 100g
787 67 g
…
La dieta può essere composta da un minimo di 1 ad una massimo di 52 settimana
![Page 28: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/28.jpg)
REGOLE SEMANTICHE – DIETA (2)
Settimana
Lunedì
Colazione7:00
500 50 g
877 100 g
Pranzo12:00
Cena19:30
…
Domenica
Settimana
Lunedì
…
Domenica
…
Pranzo13:00
748 50 g
821 100g
787 67 g
…
Ogni settimana è composta da 7 giorni e l’ordine dei giorni va
rispettato
![Page 29: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/29.jpg)
REGOLE SEMANTICHE – DIETA (3)
Settimana
Lunedì
Colazione7:00
500 50 g
877 100 g
Pranzo12:00
Cena19:30
…
Domenica
Settimana
Lunedì
…
Domenica
…
Pranzo13:00
748 50 g
821 100g
787 67 g
…
Ogni giorno può contenere da un minimo di un pasto ad un
massimo di 7 pasti
![Page 30: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/30.jpg)
REGOLE SEMANTICHE – DIETA (4)
Settimana
Lunedì
Colazione12:00
500 50 g
877 100 g
Pranzo12:00
Cena19:30
…
Domenica
Settimana
Lunedì
…
Domenica
…
Pranzo13:00
748 50 g
821 100g
787 67 g
…
Non si può avere in un giorno due o più pasti con lo stesso
orario.
![Page 31: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/31.jpg)
REGOLE SEMANTICHE – DIETA (5)
Settimana
Lunedì
Colazione7:00
500 50 g
500 100 g
Pranzo12:00
Cena19:30
…
Domenica
Settimana
Lunedì
…
Domenica
…
Pranzo13:00
748 50 g
821 100g
787 67 g
…
Non si può avere in un pasto due o più alimenti con lo
stesso codice.
![Page 32: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/32.jpg)
STRUTTURA FINALE (2)
visitor
syntaxtree parser
DietVisitor TreeVisitor ControlVisitor
userdatabase
services
guiEditorFrame
DietFrame
exception
![Page 33: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/33.jpg)
INTERFACCIA GRAFICA – EDITORFRAME
guiEditorFrame
DietFrame
EditorFrame
![Page 34: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/34.jpg)
INTERFACCIA GRAFICA – EDITORFRAME
EditorFrame (Database)
Esito dell’analisi lessicale, sintattica e semantica.
(ControlVisitor)
Linguaggio da analizzare
Rappresentazione grafica sotto forma d’albero del linguaggio
analizzato (TreeVisitor)
![Page 35: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/35.jpg)
INTERFACCIA GRAFICA – EDITORFRAME
EditorFrame (Dieta)
![Page 36: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/36.jpg)
INTERFACCIA GRAFICA – DIETFRAME
DietFrame
![Page 37: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/37.jpg)
NOTE SUL PROGETTO (1) Nato da un’idea 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 quest’ultimo
ben strutturato e definito, non ha ricevuto modifiche sostanziali la parte invece dedicata alla descrizione dell’utente 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.
L’ultimo stadio di questa evoluzione ha portato all’eliminazione di tutti i token specifici (come <DAY>, <MEANS>, <LIFESTYLE>, <SEX>, …) 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).
![Page 38: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/38.jpg)
NOTE SUL PROGETTO (2)
Oltre alla visualizzazione grafica data dall’interfaccia 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.
![Page 39: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/39.jpg)
COLLAUDO
Per il collaudo del sistema sono stati scritti alcuni significativi file di codice per verificare: la creazione corretta dell’albero sia per il
database sia per la dieta Segnalazione di errori sintattici Segnalazione di errori semantici Corretta visualizzazione del database e della
dieta
![Page 40: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/40.jpg)
SVILUPPI FUTURI
Creare un’interfaccia 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.
![Page 41: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/41.jpg)
PROTOTIPO
![Page 42: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/42.jpg)
COLLAUDO
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).
![Page 43: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/43.jpg)
COLLAUDO DATABASE
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
![Page 44: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/44.jpg)
FOODALREADYINDATABASE
![Page 45: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/45.jpg)
CATEGORYNAMEALREADYINDATABASE
![Page 46: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/46.jpg)
CATEGORYCODEALREADYINDATABASE
![Page 47: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/47.jpg)
COLLAUDO UTENTE
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 l’altezza di un valore non corretto IncorrectLifestyle
Inserimento per lo stile di vita di una parola non corretta
![Page 48: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/48.jpg)
COLLAUDO DIETA
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
![Page 49: 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](https://reader038.vdocuments.site/reader038/viewer/2022110305/5542eb5b497959361e8c958f/html5/thumbnails/49.jpg)
COLLAUDO DIETA
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