ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.

Slides:



Advertisements
Presentazioni simili
I linguaggi di programmazione
Advertisements

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.
Tabelle LALR Costruzione delle tabelle LALR Metodo LALR Introduciamo lultimo metodo di costruzione di tabelle per il parsing LR Nome: lookahead-LR abbreviato.
Costruzione delle tabelle di parsing LR canoniche
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
CONOSCIAMO IL WINDOWS '95.
Re-engineering del wrapper XML Schema per il sistema MOMIS
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Iterazione enumerativa (for)
Lezione 2 Programmare in ASP
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
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.
{ CrashLang Un linguaggio per raccogliere i risultati di un crash test Attività progettuale di Linguaggi e Modelli Computazionali M Anno Accademico: 2010/2011.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
SISTEMA DI TIPI PER JOLIE
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.
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
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
Attività progettuale in Linguaggi e Modelli Computazionali M
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.
Linguaggi e modelli computazionali LS Manni Tiziano
La fruizione dei learning object e delle prove OCSE nell’ambiente.
L’Utilizzo di WINDOWS MOVIE MAKER Creare presentazioni con le nostre foto digitali.
Un ambiente di sviluppo User Friendly per Java
Il Sistema Operativo Il Sistema Operativo è costituito dall’insieme dei programmi necessari per far funzionare tutto l’hardware del calcolatore e per nascondere.
Microsoft Word Interfaccia grafica
Realizzato dagli stagisti media educator Per creare un utente andate su Amministrazione del sito -> Utenti -> Profili -> Nuovo utente. L'username.
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.
Calendar Generator Progetto Linguaggi e Modelli Computazionali LS Docente: Enrico Dentidi: Alberto Renzi.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
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.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Corso di Laboratorio primo modulo Introduzione all'uso di un sistema operativo. Introduzione all'uso della shell (bash). Java – –Introduzione – –Tipi di.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Fondamenti di informatica T-A Esercitazione 2 : Linguaggio Java, basi e controllo del flusso AA 2012/2013 Tutor : Domenico Di Carlo.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
NOTIFICHE  Notifich è una funzionalità interna al nostro sistema che permette di inviare brevi messaggi di notifiche agli utenti che porto.
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
REALIZZAZIONE DI UN SISTEMA DI CLASSIFICAZIONE Prof. Roberto Tagliaferri Studente: Ragognetti Gianmarco Corso di Reti Neurali e Knowledge Discovery A.A.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
COMPONENTI DI UN SISTEMA INFORMATICO HardwareSoftware Parte fisicaComponenti logiche Componenti fisiche (elettroniche e meccaniche) di un computer Istruzioni.
Transcript della presentazione:

ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014

INTRODUZIONE Ispirazione presa dal gioco multipiattaforma Just Dance Definizione di una semplice grammatica per la descrizione di una coreografia Realizzazione di un parser che prenda in input un testo e ne esegua l’analisi lessicale, sintattica e semantica Generazione di diversi outputs Implementazione di un sistema per la generazione di coreografie ed effettive partite

COSA CI SERVE… ESPRESSIONI BASE something : : COSTRUTTO PER SHORTCUTS ; …

COSA CI SERVE… COSTRUTTO PER CICLO { … } COSTRUTTO SIMILE ALLO SWITCH { 1: Alla prima iterazione del ciclo una certa mossa.. 2: Alla seconda un’altra… }

ALTRE OSSERVAZIONI Servono altre informazioni accessorie (titolo, path canzone, video…) Sì è cercato di anticipare già a livello sintattico il controllo della «legittimità» di alcune mosse e costrutti Esempi  Un movimento libero non avrà mai un punteggio associato  Una mossa istantanea (fist, shake..) non avrà mai una durata ≠ 1  Switch solo dentro a un ciclo  Si sarebbe potuta ottenere una grammatica ancora più semplice, demandando il tutto a livello semantico (un po’ brigoso…)

LA GRAMMATICA - TOKENS SKIP : { " | "\r" | "\t" | "\n"} } TOKEN : { | | | | <DIR: "left" | "right" | "up" | "down"| "forward"> | | ( | )*> | <CHARSEQ: "\"" ( | " " | | )+ "\""> | | | }| "-"> }

LA GRAMMATICA (versione 1) – PRODUZIONI 1 ::= ::= ( )* ::= ( | ) ::= Move ::= ( | ) ::= ( ( | ) ) ::= ( | ) Ammetto coreografia vuota

LA GRAMMATICA (versione 1) – PRODUZIONI 2 ::= ( ( | ) ) ( SpanExp )? ::= ( ( | ) ) ::= ( )? ::= ( ( | ) )+ ::= ( )+ ::= ( ( | ) ) ::= Un Cycle può contenere altre Instruction, quindi altri SingleStep o Cycle → SELF EMBEDDING Mossa libera non ha punteggio associato Mossa istantanea non ha span associato

OSSERVAZIONI SU GRAMMATICA E LINGUAGGIO La grammatica è di tipo 2 secondo la classificazione di Chomsky Le regole di produzione sono tutte del tipo A → α con α є (VT U VN)* ed A є VN Il linguaggio generato è di tipo 2 A causa della produzione associata al simbolo non terminale Cycle tale per cui A ⇒ * α₁ A α₂ con α₁, α₂ є V+ ed A є VN La grammatica è LL(1) Per ogni produzione con più alternative nella parte destra, gli insiemi di Starter Symbols risultano disgiunti (condizione necessaria) Nessuna produzione genera la stringa vuota Ɛ

GRAMMATICA (versione 2) Nella grammatica presentata prima, nessun ciclo è «inutile» ::= ( ( | ) )+ Limite: è possibile definire variabili solo al livello esteriore Apportando una modifica (minima!) posso giocare su questo trade-off ::= ( ( | ) )+ Ora è possibile definire variabili anche all’interno dei cicli, ma posso creare cicli che di fatto non generano mosse… Si può vedere facilmente che ogni frase del linguaggio generato dalla grammatica versione 1 è una frase lecita anche qui (ma non è detto ovviamente il viceversa)

SIGNIFICATO DELLE VARIABILI IN UN CICLO Esempio define x0 shake right points: 50; repeat 2 times { do x0; define x0 free; do x0; } do x0; Output desiderato: shake right points: 50 free shake right points: 50 free shake right points: 50 Al primo ciclo sarà shake right… Sarebbe desiderabile anche al secondo! Eventuali ridenominazioni non devono essere percepite all’esterno

CONTROLLI SEMANTICI Coreografia vuota Durata totale della coreografia sopra una certa soglia Uso di variabili non definite Swing: direzione di partenza ≠ direzione di arrivo Numero di ripetizioni di un ciclo (0 non ha senso, 1 è inutile) OnIterationElement: ha senso solo se il numero dell’iterazione è minore delle ripetizioni del ciclo (la prima iterazione è la numero 1) Punteggi e durate delle mosse

ARCHITETTURA SISTEMA - PACKAGES cc: classi relative allo scanner e parser  cc.syntaxtree: classi per la costruzione dell’albero sintattico generate da JTB  cc.visitor: classi generate da JTB e relative implementazioni dei visitors.  gui: classi riguardanti l’interfaccia grafica  media: classi wrapper per lo stream audio e video  moveset: gerarchia di classi accessorie per contenere le info relative a ciascuna mossa (direzione, span, punteggio, riferimento al pittogramma…) e la loro valutazione  pictograms: immagini utilizzate nella gui

VISITORS Visitor ottenuti dall’estensione di alcune implementazioni già fornite da JTB Estensioni da DepthFirstVoidVisitor: SemanticsVisitor: visitor in cui è concentrato il controllo semantico SequenceVisitor: visitor per la generazione dell’effettiva coreografia giocabile Estensioni da DepthFirstVoidArguVisitor : TreeVisitor: visitor per la generazione grafica dell’albero Estensioni da DepthFirstRetVisitor : PrinterVisitor: visitor per la generazione del file testuale

INTERFACCIA GRAFICA 1 AREA TESTUALE INPUT UTENTE AREA PER VISUALIZZARE ALBERO SINTATTICO MESSAGGI ALL’UTENTE (WARNINGS, ERRORI…) MENU BAR PER CONTROLLO INPUT E GENERAZIONE OUTPUT (ITEMS ABILITATI E DISABILITATI CON UN CERTO CRITERIO…)

INTERFACCIA GRAFICA 2

WII(RE)MOTE Telecomando con tasti + accelerometro integrato che permette di percepire inclinazioni e rotazioni (non c’è giroscopio!) + sensore infrarosso (non utilizzato ai fini del progetto…) Libreria WiiUseJ: API Java per utilizzare e ricevere info dei telecomandi Dongle bluetooth (+ stack compatibile) Banalmente, basta fare l’overriding di WiimoteListener, ottenere un riferimento ai Wiimote connessi e agganciarvi il listener!

STRUMENTI UTILIZZATI Linguaggio di programmazione: Java jdk Ambiente di sviluppo: Eclipse Kepler / NetBeans 7.4 Generazione grammatica e parser: JavaCC (plugin per eclipse) Librerie di supporto: Jlayer per riproduzione audio VlcJ per riproduzione video WiiUseJ 0.12b per interfacciamento e ricezione eventi del WiiRemote