Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali LS Prof. Enrico Denti Progetto di Maria Teresa Roccia Model Drive
Requisiti di base dellapplicazione: -C-Controllare la correttezza di sequenze di comandi per il pilotaggio di diversi modellini di macchine, elicotteri o barche. -E-Esplicitare leffetto prodotto dalleventuale esecuzione sul modello del veicolo scelto della particolare sequenza immessa. -I-I comandi devono poter essere forniti mediante il supporto di uninterfaccia. -S-Sul modellino è possibile settare 10 differenti valori di accelerazione, da 0 (accelerazione nulla) a 9 (accelerazione massima), che modificano la velocità con cui il modello si muove. -I-I modellini si differenziano fra loro per il colore (rosso, nero, verde, grigio, blu e giallo). -L-La portata massima del radio comando è pari a 30 mt. Occorre disporre di: Un linguaggio specifico per il pilotaggio di modelli di veicolo. Un interprete per Controllo della correttezza delle frasi del linguaggio immesse Descrizione dei movimenti del veicolo a seguito della sequenza delle frasi corrette immesse dall'utente. Model Drive Quali obiettivi e come raggiungerli Definizione di Grammatica Analisi lessicale e sintattica Analisi semantica
Up Model Drive Approccio al problema: Spazio d'azione e possibili movimenti 3D 2D Forward Left Right Forward Left Right Down Backward TYPE DIRECTION Quale grammatica per quale linguaggio?
S ::= ::= := 2D_Drive | 3D_Drive ::= Car_ | Boat_ | Helicopter_ ::= Red | Green | Black | Yellow | Blue | Grey ::= ::= | ::= ::= forward | left | right | backward | up | down ::= ::= | ::= ::= | ::= 0 | 1 | 2 ::= 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= Model Drive Grammatica BNF: lidea di partenza (1/1) ::= ( ::= ) ::= ; ::=. ::= : ::= + ::= - ::= OFF ::= ON
S ::= ::= := 2D_Drive | 3D_Drive ::= Car_ | Boat_ | Helicopter_ ::= Red | Green | Black | Yellow | Blue | Grey ::= ::= | ::= ::= forward | left | right | backward | up | down ::= ::= | ::= ::= | ::= 0 | 1 | 2 ::= 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= Ricorsione, NO SELF-EMBEDDING Quale linguaggio? Model Drive Grammatica Context-Free (Tipo 2) Secondo Chomsky Linguaggio regolare Quale grammatica? ::= ( ::= ) ::= ; ::=. ::= : ::= + ::= - ::= OFF Grammatica BNF: lidea di partenza (1/2)
S ::= ::= := 2D_Drive | 3D_Drive ::= Car_ | Boat_ | Helicopter_ ::= Red | Green | Black | Yellow| Blue | Grey ::= ::= | ::= ::= forward | left | right | backward | up | down ::= ::= | ::= ::= | ::= 0 | 1 | 2 ::= 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= Model Drive Grammatica BNF: lidea di partenza (1/3) Controllo a livello sintattico: - Troppo vincolante: grammatica con scarsa possibilità di riuso - Inutile: il controllo a livello semantico è comunque necessario LL(1) Grammatica LL(K)?
S ::= ::= := 2D_Drive | 3D_Drive ::= Car_ | Boat_ | Helicopter_ ::= Red | Green | Black | Yellow | Blue | Grey ::= ::= | ::= ::= forward | left | right | backward | up | down ::= ::= | ::= ::= | ::= 0 | 1 | 2 ::= 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= Model Drive Grammatica BNF: lidea di partenza (1/4) ::= ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 DIST: mt.cm oppure km.mt oppure cm.mm …
S ::= ::= := 2D_Drive | 3D_Drive ::= Car_ | Boat_ | Helicopter_ ::= Red | Green | Black | Yellow| Blue | Grey ::= ::= { } ::= ::= forward | left | right | backward | up | down ::= ::= ( | ) ::= ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= ::= ON ::= OFF Model Drive Grammatica utilizzata EBNF ::= ( ::= ) ::= ; ::=. ::= : ::= + ::= - Grammatica Context- Free (Tipo 2) Secondo Chomsky LL(1) Linguaggio regolare
Model Drive Analisi Sintattica: limiti 2D_Drive Car_Red: forward(21.15)+5; OFF. 2D_Drive Car_Red: ON; forward(21.15)+5; OFF. Il modello deve essere acceso e poi pilotato! 2D_Drive Car_Red: ON; up(21.15)+5; OFF. La frase è sintatticamente corretta, ma il modello non può volare! 2D Forward Left Right Backward 2D_Drive Car_Red: ON; forward(21.15)+0; OFF. La frase è sintatticamente corretta, ma il modello si muoverà?
Model Drive Analisi Semantica: il calcolo del significato In generale Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio? In particolare: Come si muoverà il modellino scelto a seguito delleventuale esecuzione di una corretta sequenza di comandi? Dipende dai valori settati come distanza ed accelerazione, ma soprattutto dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino! Possibili metodologie risolutive: Metodologia object-oriented: Metodo di interpretazione interno alle classi Ma nuova interpretazione => Definizione del nuovo metodo in tutte le classi!
Model Drive Alcune classi sintattiche: esempio Interpretare i movimenti di un aereo: Possibilità di decollare solo - Dopo aver raggiunto una certa accelerazione - Se ha a disposizione una certa distanza - Con un determinato comando di direzione,…
Model Drive Analisi Semantica: il calcolo del significato In generale Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio? In particolare: Come si muoverà il modellino scelto a seguito delleventuale esecuzione di una corretta sequenza di comandi? Dipende dai valori settati come distanza ed accelerazione, ma soprattutto dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino! Possibili metodologie risolutive: Metodologia funzionale: Funzione di interpretazione esterna alle classi Ma nuova produzione => Modifica di tutte le funzioni di interpretazione! Metodologia object-oriented: Metodo di interpretazione interno alle classi Ma nuova interpretazione => Definizione del nuovo metodo in tutte le classi!
Model Drive Analisi Semantica: il calcolo del significato In generale Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio? In particolare: Come si muoverà il modellino scelto a seguito delleventuale esecuzione di una corretta sequenza di comandi? Dipende dai valori settati come distanza ed accelerazione, ma soprattutto dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino! Il punto di incontro: Pattern Visitor e tecnica del double dispatch Un oggetto Visitor localizza la funzione di valutazione seguendo lapproccio funzionale e fornendo loperazione chiamata di solito visit Sono possibili tante versioni della stessa funzione di valutazione quante le classi della tassonomia, seguendo lapproccio object-oriented (oveloading visit)
Model Drive Strumenti utilizzati Java 1.6.0_03 NetBeans 6.1 JavaCC 4.1 JavaCC companion tools: -J-Java Tree Builder J-JJDoc Le azioni semantiche riguardano solo il Visitor Documento per la grammatica Generazione automatica del riconoscitore LL: Classi sintattiche e Visitor vengono create in modo automatico
Model Drive Analisi Semantica: pattern Visitor e double- dispatch Create in automatico (JavaTreeBuilder) Interpretare i movimenti di un nuovo tipo di modellino significa semplicemente introdurre un nuovo oggetto Visitor
Model Drive Analisi Semantica: pattern Visitor e double- dispatch Create in automatico (JavaTreeBuilder) Anche espandere la grammatica fornendo nuove funzionalià allapplicazione non è un più un problema!
Model Drive Un esempio Lutente decide che vuole avere la possibilità di stabilire fra due o più veicoli qual è quello programmato in modo migliore per raggiungere una determinata destinazione, dato un certo punto di partenza! S ::= | ::=... ::= { }...
Model Drive Analisi Semantica: esplicitazione del significato Esplicitazione semantica: - Descrizione verbale, sì ma… - Rappresentazione grafica (mediante la classe ActionSpace)
Model Drive Sviluppi possibili Migliorare lesplicitazione semantica mediante rappresentazione grafica tridimensionale dei movimenti (ad esempio utilizzando java3d) Pilotaggio di altri tipi di modellini oltre a quelli inseriti, ad esempio - Aereo: si può muovere quasi come una macchina, ma anche come un elicottero, ponendo attenzione alle fasi di atterraggio e di decollo che sono più complesse - Sottomarino: si può muovere come una barca, ma anche su e giù come un elicottero, … Pilotaggio di più modellini contemporaneamente - Per gare di velocità lungo un prefissato percorso - Per individuare il percorso più breve date le coordinate di partenza e di arrivo, … Descrizione più precisa dello spazio dazione (oltre le sole coordinate e la portata massima), ad esempio - Tenendo conto di inclinazioni e pendenze (che modificano le fasi di atterraggio o le velocità dei veicoli) - Per fissare percorsi o ostacoli, … Immaginare diversi possibili scenari applicativi andando oltre i modellini - Movimento di nastri o bracci meccanici sincronizzati - Movimento di un veicolo-aspirapolvere automatico programmato in base ad una precisa planimetria, …
Model Drive DRIVE a MODEL