La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Luca Bueti Progetto di Linguaggi e Modelli Computazionali LS.

Presentazioni simili


Presentazione sul tema: "Luca Bueti Progetto di Linguaggi e Modelli Computazionali LS."— Transcript della presentazione:

1 Luca Bueti Progetto di Linguaggi e Modelli Computazionali LS

2 Obiettivi Progettare un linguaggio che consenta di descrivere ogni avvenimento importante di una partita di baseball Il linguaggio dovrà essere sintetico ma facilmente comprensibile da un addetto ai lavori Produrre una rappresentazione finale già utilizzabile Pagina web HTML 07/07/20112Luca Bueti - RunHome

3 Analisi del problema Necessità di un parser che effettui lanalisi grammaticale e sintattica dellinput segnalando eventuali errori Visitor che valuti lAPT generato dal parser e segnali eventuali errori semantici Componente che utilizzi le strutture generate dal visitor per produrre una rappresentazione della partita in HTML 07/07/20113Luca Bueti - RunHome

4 Un esempio di base 1/2 Game { San_Francisco_Giants { Lineup { RF 56 A._Torres 2B 21 F._Sanchez C 28 B._Posey LF 13 C._Ross 3B 5 J._Uribe 1B 17 A._Huff SS 16 E._Renteria CF 33 A._Rowand P 55 T._Lincecum } Bench { CL 38 B._Wilson DH 9 P._Burrel } Texas_Rangers { Lineup { SS 1 E._Andrus 3B 10 M._Young CF 32 J._Hamilton RF 17 N._Cruz 2B 5 I._Kinsler LF 7 D._Murphy C 11 B._Molina 1B 18 M._Moreland P 33 C._Lee } Bench { DH 27 V._Guerrero RP 30 N._Feliz } Una delle due squadre Formazione iniziale 07/07/20114Luca Bueti - RunHome Componenti panchina

5 Un esempio di base 2/2 Final 3:1 Recap { 1 Top {…} Bottom {…} … 5 Top { AtBat 17 S(L) S(L) 1stB (E) AtBat 9 S(L) S(S) F S(S) SO AtBat 16 S(L) B S(F) B GO Runner 17 FRCO Runs 0 Hits 0 Errors 1 } Bottom { AtBat 5 S(L) GO AtBat 7 S(L) S(F) S(S) SO AtBat 11 S(S) S(S) GO Runs 0 Hits 0 Errors 0 } 6… Uno degli inning Le due metà di un inning Un turno in battuta (battitore e corridori) 07/07/20115Luca Bueti - RunHome

6 Strumenti di sviluppo JavaCC Generatore di parser top-down per grammatiche LL(k) JTB Utilizzato insieme a JavaCC, è un generatore di Abstract Syntax Tree NetBeans Ambiente di sviluppo multilinguaggio 07/07/20116Luca Bueti - RunHome

7 Grammatica: tokens Tokens (alcuni esempi) | | … KEYWORD (il contenuto non è rilevante in fase di valutazione) NOTA: Alcuni token sono in comune, lo scanner riconoscerà SEMPRE la prima regola. Questo non è un problema perché i token saranno alternativi allinterno della stessa produzione. STATIC FIELD (il contenuto è rilevante ai fini della valutazione finale) 07/07/20117Luca Bueti - RunHome

8 Grammatica: Partita Scope() ::= Game() ::= Game() Teams() GameRecap() Produzioni Teams() ::= TeamFormation() TeamFormation()::= LineUp() Bench() Scope della grammatica, è un semplice container. Game definisce la data della partita e le due sezioni fondamentali: squadre e riassunto del match Teams definisce i nomi delle due squadre (ospite e ospitante) e incapsula le loro formazioni. TeamFormation definisce la formazione di partenza e i giocatori presenti in panchina. 07/07/20118Luca Bueti - RunHome

9 Grammatica: Formazioni LineUp()::= Bench()::= ( Player() )* Player()::= ( | ) GameRecap()::= Inning()::= Recap() PitchByPitch() [PitchByPitch() ] Player definisce le informazioni base del giocatore: posizione (se giocatore è nella formazione iniziale) o posizione preferita (se in panchina), numero di maglia, nome. GameRecap descrive il risultato finale e Recap, cioè la descrizione della partita Inning per Inning Il secondo PitchByPitch è opzionale perché se a metà del 9° Inning (o successivi) la squadra di casa è in vantaggio, gli ospiti non avranno più la chance di segnare, quindi lhalf-inning non viene giocato. 07/07/20119Luca Bueti - RunHome

10 Grammatica: Half-Inning PitchByPitch()::= ( Sub() )* ( Turn() )* Sub()::= ( | ) PitchByPitch esprime quello che accade in metà inning, quando una squadra attacca e laltra difende. In particolare definisce le sostituzioni iniziali e i diversi turni in battuta. Inoltre riassume il numero di runs, hits e errori relativi a quella metà di inning. Sub definisce una sostituzione, della squadra di casa o di quella ospite, in cui il primo numero è quello del giocatore che esce dal campo, il secondo di quello che entra. 07/07/201110Luca Bueti - RunHome

11 Grammatica: Turn at bat Turn()::= Batter() ( Runner() )* ( Sub() )* Pitch()::= Steal()::= ( Steal() )* Turn rappresenta gli eventi di un turno in battuta, ovvero le azioni del battitore, quelle degli eventuali corridori e le eventuali sostituzioni finali. Per ogni battitore viene descritta la singola palla giocata (pitch) e il suo achievement finale (ad es. raggiunta 1° base). Batter()::= Res()::= Res() ( Pitch() )* BatterResult() Pitch rappresenta la singola palla (ad es. ball o strike …) e include gli eventuali tentativi da parte dei corridori di rubare basi durante quel lancio. 07/07/201111Luca Bueti - RunHome

12 Grammatica: Turn Result BatterResult()::= Hit()::= Base()::= | Hit() | Base() ( )? Runner()::= ( | ) La descrizione del risultato per ogni battitore è suddivisa in più regole (battitore eliminato al piatto, battitore colpisce la palla ma viene presa al volo, battitore arriva in base con eventuale errore del fielder) per facilitare il recupero del risultato stesso in fase di valutazione. Anche per ogni Runner viene descritto il suo achievement (ad es. eliminato o raggiunge 3° base …) 07/07/201112Luca Bueti - RunHome

13 Grammatica: Osservazioni Secondo la definizione di Chomsky la grammatica è di tipo 2, in quanto tutte le produzioni sono Context-free, cioè della forma: La grammatica inoltre non contiene self- embedding, per cui il linguaggio generato sarà regolare. 07/07/201113Luca Bueti - RunHome

14 Struttura dellapplicazione 1/3 Scanner Parser AST Serie di caratteri Serie di token Rappresentazione della frase 07/07/201114Luca Bueti - RunHome CONTROLLO ERRORI SINTATTICI

15 Struttura dellapplicazione 2/3 AST Tree Visitor Sem Visitor 07/07/201115Luca Bueti - RunHome CONTROLLO ERRORI SEMANTICI

16 Struttura dellapplicazione 3/3 package gui, classi per linterfaccia grafica package homerun, classi che rappresentano i dati della partita package homerunvisitor, implementazioni dei due tipi di visitor 07/07/201116Luca Bueti - RunHome package parser, classi generate da JavaCC che implementano il parser package syntaxtree, classi generate da JTB per rappresentare i nodi package visitor, classi generate da JTB che definiscono linterfaccia Visitor e alcune sue implementazioni di base

17 GUI & Testing Test effettuati: Inserimento di errori sintattici, ad esempio: Posizione del giocatore non definita Data della partita nel formato sbagliato Inserimento di errori semantici, ad esempio: Numero di giocatori nella formazione iniziale diverso da 9 Numero del giocatore protagonista dellazione non definito nella formazione Generazione del file HTML Test it NOW! 07/07/201117Luca Bueti - RunHome

18 Limiti e sviluppi futuri Limiti: Controllo degli errori semantici migliorabile Output HTML non personalizzabile Possibili sviluppi futuri: Includere una descrizione delle azioni più dettagliata (esempio, direzione della palla appena battuta, tipo di lancio del pitcher, …) Utilizzare le informazioni raccolte per calcolare delle statistiche finali 07/07/201118Luca Bueti - RunHome

19 Grazie per lattenzione 07/07/201119Luca Bueti - RunHome


Scaricare ppt "Luca Bueti Progetto di Linguaggi e Modelli Computazionali LS."

Presentazioni simili


Annunci Google