runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti

Slides:



Advertisements
Presentazioni simili
Le funzioni dell’ “Operatore”.
Advertisements

Introduzione ad XML Mario Arrigoni Neri.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Analizzatori Sintattici con Cup Giuseppe Morelli.
Il programma del Rotaract Indice 02/04/20112 Il distretto Rotaract 2060 Cosa cè in programma per lanno prossimo ?
Metodologie di Programmazione = decomposizione basata su astrazioni
5 – Progettazione Concettuale
CURSO DE MONITOR DE FUTBOL SALA
Lez. 3 - Gli Indici di VARIABILITA’
Programmazione Procedurale in Linguaggio C++
REFERTO DI GARA PALLAVOLO INDOOR.
ISISS Antonio Sant’Elia Informazione del personale
ISISS Antonio Sant’Elia Informazione del personale
eliana minicozzi linguaggi1a.a lezione2
BPR: BUSINESS PROCESS REENGINEERING
Unità Didattica 2 I Linguaggi di Programmazione
REPORT DATI QUESTIONARI a.s
LA DIFESA Prof MORETTI Maurizio.
Il baseball.
Le Regole della Pallapugno
LOsservatorio Virtuale per la scuola Massimo Ramella Osservatorio Astronomico di Trieste 55° Congresso Nazionale della SAIt Palermo, 3 – 6 maggio 2011.
REGOLAMENTO FIBA - Aggiornamento 2012
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
TREVISO 17/4/09 STEFANO FOGLI - GRUPPO ARBITRI FERRARA
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.
FantaGoal Quando il calcio è di rigore… Fantasia Nicola Corso di Laurea in Informatica Università La Sapienza Roma A.A. 2003/2004.
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
Sei bravo a… Verifica delle capacità di gioco Difesa e Attacco N. 2 sottosquadre di 7 giocatori – 1 portiere + 3 coppie di giocatori di campo Si gioca.
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Lezione 21 dicembre 2008 Luciano Molinari
METODI EMPIRICI Marco Galleri 2011.
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.
5 dicembre Programma LLP Azione ERASMUS Intensive Programme.
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.
Lez. 3 - Gli Indici di VARIABILITA’
Gli Algoritmi L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si.
IL NUMERO DEI CALCIATORI:
TEST TECNICI Stagione Sportiva 2014/2015 Sezione Valdarno OSSERVATORI
Corso per Dirigenti Accompagnatori
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
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.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
DISTINTA ONLINE PROCEDURA DI COMPILAZIONE
TAMBURELLO.
IL CALCIO Il calcio è uno sport di squadra dove si affrontano due squadre ciascuna composta da undici giocatori, compreso il portiere. Lo scopo di questo.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti Linguaggio per la descrizione di una partita di baseball (MLB) Progetto di Linguaggi e Modelli Computazionali LS

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/2011 Luca Bueti - RunHome

Analisi del problema Necessità di un parser che effettui l’analisi grammaticale e sintattica dell’input segnalando eventuali errori Visitor che valuti l’APT 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/2011 Luca Bueti - RunHome

Un esempio di base 1/2 Una delle due squadre Formazione iniziale Game { 2010-11-01 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 Formazione iniziale 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 Componenti panchina 07/07/2011 Luca Bueti - RunHome

Un turno in battuta (battitore e corridori) 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 Un turno in battuta (battitore e corridori) Le due metà di un inning 07/07/2011 Luca Bueti - RunHome

Strumenti di sviluppo JavaCC JTB NetBeans 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/2011 Luca Bueti - RunHome

Grammatica: tokens Tokens (alcuni esempi) KEYWORD (il contenuto non è rilevante in fase di valutazione) Tokens (alcuni esempi) “STATIC FIELD” (il contenuto è rilevante ai fini della valutazione finale) < GAME: "Game" > | < DATE_US : (["0"-"9"])(["0"-"9"])(["0"-"9"])(["0"-"9"])"-"(["0"-"9"])(["0"-"9"])"-"(["0"-"9"])(["0"-"9"]) > | < LINEUP : "Lineup" > | < BENCH : "Bench" > | < POSITION : "P" | "C" | "1B" | "2B" | "3B" | "SS" | "LF" | "CF" | "RF" > | < PREFERRED_POSITION : "SP" | "CL" | "RP" | "C" | "1B" | "2B" | "3B" | "SS" | "LF" | "CF" | "RF" | "DH" > | < PITCH : "B" | "S(L)" | "S(S)" | "S(F)" | "F" | "HBP" > | < STEAL : "ST" | "CST" > | < NO_HIT : "SO" | "W" > | < HIT : "SAC" | "FC" | "FOULO" | "FO" | "TO" | "GO" | "LO" | "PO" | "HOMER"> | < ERR : "(E)" > | < BASE : "1stB" | "2ndB" | "3rdB" | "homeB" > | < RUNNER_RES : "S" | "T" | "FRCO" | "O" > | < STRINGA: (["A"-"Z","a"-"z","0"-"9","_","\'",".","à","è","é","ò","ù","ç","ì","È","-"])+ > | < CARD_NUMBER : (["0"-"9"]) | ((["1"-"9"])(["0"-"9"])*) > | < COLUMN: ":" > | … NOTA: Alcuni token sono in comune, lo scanner riconoscerà SEMPRE la prima regola. Questo non è un problema perché i token saranno alternativi all’interno della stessa produzione. 07/07/2011 Luca Bueti - RunHome

Grammatica: Partita Produzioni Scope() ::= Game() ::= < GAME > < LBRACE > Game() < RBRACE > < DATE_US > Teams() GameRecap() Scope della grammatica, è un semplice container. Game definisce la data della partita e le due sezioni fondamentali: squadre e riassunto del match Teams() ::= < STRINGA > < LBRACE > TeamFormation() < RBRACE > Perché non PlayerList()? Teams definisce i nomi delle due squadre (ospite e ospitante) e incapsula le loro formazioni. TeamFormation()::= < LINEUP > < LBRACE > LineUp() < RBRACE > < BENCH > < LBRACE > Bench() < RBRACE > TeamFormation definisce la formazione di partenza e i giocatori presenti in panchina. 07/07/2011 Luca Bueti - RunHome

Grammatica: Formazioni LineUp()::= Bench()::= ( Player() )* Player definisce le informazioni base del giocatore: posizione (se giocatore è nella formazione iniziale) o posizione preferita (se in panchina), numero di maglia, nome. Player()::= ( < POSITION > | < PREFERRED_POSITION > ) < CARD_NUMBER > < STRINGA > GameRecap descrive il risultato finale e Recap, cioè la descrizione della partita Inning per Inning GameRecap()::= Inning()::= < FINAL > < CARD_NUMBER > < SEMICOLUMN > < CARD_NUMBER > Recap() < CARD_NUMBER> < TOP > PitchByPitch() < BOTTOM > [PitchByPitch() ] 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 l’half-inning non viene giocato. 07/07/2011 Luca Bueti - RunHome

Grammatica: Half-Inning PitchByPitch()::= < LBRACE > ( Sub() )* ( Turn() )* < RUNS > < CARD_NUMBER > < HITS > < CARD_NUMBER > < ERRORS > < CARD_NUMBER > < RBRACE > PitchByPitch esprime quello che accade in metà inning, quando una squadra attacca e l’altra 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()::= < SUB > ( < HOME_TEAM > | < GUEST_TEAM > ) < CARD_NUMBER > < CARD_NUMBER > 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/2011 Luca Bueti - RunHome

Grammatica: Turn at bat Batter() ( Runner() )* ( Sub() )* Turn rappresenta gli eventi di un turno in battuta, ovvero le azioni del battitore, quelle degli eventuali corridori e le eventuali sostituzioni finali. Batter()::= Res()::= < AT_BAT > < CARD_NUMBER > Res() ( Pitch() )* BatterResult() Per ogni battitore viene descritta la singola palla giocata (pitch) e il suo achievement finale (ad es. ‘raggiunta 1° base’). Pitch()::= Steal()::= < PITCH > ( Steal() )* < STEALING > < CARD_NUMBER > < STEAL > < BASE > 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/2011 Luca Bueti - RunHome

Grammatica: Turn Result BatterResult()::= Hit()::= Base()::= < NO_HIT > | Hit() < HOMER > | Base() < BASE > (< ERR >)? 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. Runner()::= < RUNNER > < CARD_NUMBER > ( < RUNNER_RES > | < BASE > ) Anche per ogni Runner viene descritto il suo achievement (ad es. ‘eliminato’ o ‘raggiunge 3° base’ …) 07/07/2011 Luca Bueti - RunHome

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/2011 Luca Bueti - RunHome

Struttura dell’applicazione 1/3 Serie di caratteri Scanner CONTROLLO ERRORI SINTATTICI Serie di token Rappresentazione della frase AST Parser 07/07/2011 Luca Bueti - RunHome

Struttura dell’applicazione 2/3 Tree Visitor AST Sem Visitor CONTROLLO ERRORI SEMANTICI 07/07/2011 Luca Bueti - RunHome

Struttura dell’applicazione 3/3 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 l’interfaccia Visitor e alcune sue implementazioni di base package gui, classi per l’interfaccia grafica package homerun, classi che rappresentano i dati della partita package homerunvisitor, implementazioni dei due tipi di visitor 07/07/2011 Luca Bueti - RunHome

GUI & Testing Test it NOW! 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” dell’azione non definito nella formazione Generazione del file HTML Test it NOW! 07/07/2011 Luca Bueti - RunHome

Limiti e sviluppi futuri 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/2011 Luca Bueti - RunHome

Grazie per l’attenzione 07/07/2011 Luca Bueti - RunHome