Linguaggi e Modelli Computazionali M Prof. Enrico Denti

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

COMITATO REGIONALE FRIULI VENEZIA GIULIA FEDERAZIONE ITALIANA PESISTICA E CULTURA FISICA Corso di prima formazione per ARBITRI REGIONALI di Pesistica e.
Introduzione ad XML Mario Arrigoni Neri.
Lezione 8 Anno accademico Titolare corso: Prof. Costanza Torricelli
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
I linguaggi di programmazione
Analizzatori Lessicali con JLex
Sintassi (prima parte)
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Il linguaggio C Gli operatori e le espressioni C Language
Caratteri e stringhe di caratteri
I fogli elettronici Microsoft Excel. I Fogli Elettronici Sono strumenti per organizzare gestire, analizzare e presentare insiemi di dati. Le funzionalità
Esercitazione del Corso di Interazione Uomo-Macchina
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.
Creiamo una cartella nel nostro hard disk dove andremo ad inserire le risorse che costituiranno i contenuti del sito. Apriamo il programma Dopo aver cliccato.
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.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
Facoltà di Ingegneria – Università di Bologna
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
Corso Allievi cronometristi - nuoto A cura di Andrea Pederzoli
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.
Professore: Studente: Enrico Denti Thomas Ricci
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
STRUTTURA FEDERALE REGOLAMENTI TECNICI
Scuola Federale di Cronometraggio - Struttura Periferica Lombardia NOVEMBRE 2011 ASSOCIAZIONE G. VERGANI DI MANTOVA IL CRONOMETRO MECCANICO IL CRONOMETRO.
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.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
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.
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Lezione 3 Struttura lessicale del linguaggio
Word: gli strumenti di formattazione
Lezione 10 Riccardo Sama' Copyright  Riccardo Sama' Word: strumenti di correzione.
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.
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.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Informatica e Informatica di Base
Javascript. HTML per definire il contenuto delle pagine web CSS per specificare il layout delle pagine web JavaScript per definire il comportamento delle.
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Linguaggi e Modelli Computazionali M Prof. Enrico Denti S E WIMMING VENT Generator Realizzato da Isabella Gottardi Linguaggi e Modelli Computazionali M Prof. Enrico Denti

Obiettivi del progetto Si vuole progettare un sistema che permetta di generare eventi natatori. Dovremo quindi: Realizzare un linguaggio in grado di descrivere gli eventi natatori Ovvero realizzare una grammatica che ci permetta di definire univocamente quali sono le frasi che appartengono al linguaggio … Definire un interprete per il linguaggio … un sistema che accetti in ingresso una stringa di caratteri (programma), riconosca se la stringa è una frase del linguaggio (analisi sintattica) e se lo è esegua delle azioni altrimenti restituisca un errore di forma … Ottenere un output grafico

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Organizzatore, luogo, data di inizio e di fine, data termine iscrizioni, ecc

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Giudici di partenza, addetti ai concorrenti, alle false partenze e virate, ecc…

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Società dei cronometristi, tipo di cronometraggio, ecc.

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Speaker, medico, dirigente della società ospitante, ecc.

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Tutte le gare in programma. Ciascuna prevede nome, data e ora, categoria atleti, ecc…

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Startlist degli atleti iscritti alle gare

Struttura degli eventi Ogni evento è costituito da Informazioni sull’evento stesso Giuria Cronometristi Altro personale Programma dell’evento Elenco di partenza degli atleti Note eventuali Note

Scopo della Grammatica Grammatica B.N.F GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR> Scopo della Grammatica EVENT = 'event'; INFOEVENT='infoevent'; NAMEEVENT='nameevent'; CATEGORY='cat'; ORGANIZ='org'; LOCATION='loc'; TYPE='type'; … TOKEN INT : DIGIT+; FLOAT :DIGIT+ '.' DIGIT+; DATE :DIGIT DIGIT '/' DIGIT DIGIT '/' (DIGIT DIGIT | DIGIT DIGIT DIGIT DIGIT); HOUR : DIGIT DIGIT ':' DIGIT DIGIT; STRING : '"' ( ESC_SEQ | ~('\\'|'"') )* '“’; WS : ( ‘ ‘ | ‘\t’ | ‘\r‘ | ‘\n‘ ) {$channel=HIDDEN;}; …

Informazioni dell’evento Grammatica B.N.F GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR> Informazioni dell’evento <INFOEVENT> <A_GR> nameevent category organiz location type start end enddatereg poolbase limittimereg lanes <C_GR> infoevent{ nameevent : "Memorial Elena Lago" cat : Agonisti org : "Centro Nuoto Tezze ASD" loc : "Tezze sul Brenta" type : "Evento ufficiale organizzato da Società afferente al C.R.V." start : 06/11/2011 end : 06/11/2011 endreg : 04/11/2011 poolbase : 25 m limittime : "No" lanes : 6 } Propaganda Agonisti Master

Grammatica B.N.F GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR> Giuria Cronometristi <JURY> <A_GR> referee (coadjuctor)* depjudge (falsestartempl)* compempl <C_GR> jury{ referee : "Andrea Pozzato" coadjutor : "Sandra Pavanello" depjudge : “Marco Tolomei" fsemployee : "Milena Chiarello" competemployee: "Barbara Tolomei" } <TIMING> <A_GR> cronotype cronoserv cronosoc <C_GR> other{ speaker: "Roberto Magnagnini" doctor: "Leonardo Valenti" manager: "Antonio Baldetti" } <OTHER> <A_GR> speak doct mang <C_GR> timing{ cronotype : "Manuale" cronoserv : "" cronosociety : "G.u.g Veneto" }

Grammatica B.N.F GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR> Programma dell’evento program { date : 15/09/09 [ hour : 12:00 category : Senior speciality : "50 rana" turn : heats ] [ hour : 12:15 speciality : “100 stile" } <PROG> <A_GR> (<datecomp> ( <A_Q> hourcomp categorycomp speccomp turncomp <C_Q> )+ <C_GR >)+ <C_GR> Esordienti A, Ragazzi, Juniores, Master25, Master30, ecc… Serie, Semifinale, Finale

Grammatica B.N.F GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR> <STARTLIST> <A_GR> ( <COMPNAME> (nameturn (<A_Q> LANE acode aname asurname asoc abirth atimereg atimeres <C_Q>)+ <C_GR>)+ <C_GR> StartList startlist { compname : "50 rana" heats 1 [ lane : 1 acode :"VEN-000000" aname : “Isabella" asurname :“Gottardi" asociety: “Adria Nuoto" abirthday : 23/06/1987 atimereg: 00:00:30:80 atimeres: 00:00:00:00 ] } Nel formato “AAA-000000”

Considerazioni sulla grammatica (1/2) Secondo la classificazione di Chomsky le grammatiche di tipo 2 (context free) presentano le produzioni vincolate alla forma: … ma non sono presenti produzioni con self-embedding … quindi il linguaggio è regolare Tipo 2 A → α con α є (VT U VN)* ed A є VN A → α1 A α2 con A є VN e α1, α2 є (VN U VT)+ Tipo 3

Considerazioni sulla grammatica (2/2) La grammatica è LL(1)? Per determinare se una data Grammatica è LL(1) condizione necessaria e sufficiente è che ciascuna produzione che presenta alternative nella sua parte destra abbia insiemi di Director Symbols (Starter Symbols) disgiunti e la stringa vuota (ε) sia assente! Nella nostra grammatica le produzioni con alternative nella parte destra hanno gli insieme di Starter Symbols disgiunti e la stringa vuota (ε) è assente quindi… … la grammatica è LL(1) !!!

Diagramma delle classi - Package Contiene tutte le classi che estendono Exceptions che gestiscono le eccezioni sintattiche e semantiche Contiene tutte le classi Lexer e Parser generate automaticamente da Antlr Contiene tutte le classi necessarie per la costruzione dell’interfaccia grafica

Diagramma delle classi Antlr 3.0 non implementa il pattern Visitor per la valutazione dell’AST, è quindi necessario estendere la classe CommonTree e creare tutti i nodi necessari… (qui ne sono riportati solo alcuni)

Diagramma delle classi -Visitor Sono stati implementati due visitor, avendo così la possibilità di avere due viste differenti HTML Visitor, produce una pagina HTML dell’evento natatorio Tree Visitor, produce a video un albero della frase analizzata

Verifica semantica Errori lessicali e sintattici vengono rilevati direttamente da Lexer e da Parser tramite l’eccezione ErrorNodeException qualora venga inserito un nodo errore nell’AST, sono visualizzate a video all’utente mediante un messaggio nella console. Errori semantici gestiti: Codice atleta errato, previsto nel formato “VEN-000000” Tempo di iscrizione e tempo risultato dell’atleta sbagliati Numero di corsia superiore al numero di corsie dell’impianto Orario immesso sbagliato

Funzionamento del sistema (1/2) Parser Token Lexer Sintax Error AST

Funzionamento del sistema (2/2) AST HTML Visitor Tree Viisitor

Strumenti utilizzati Linguaggio di programmazione C# Strumento per generazione automatica di Lexer e Parser IDE di sviluppo

Limiti e sviluppi futuri Per il momento è possibile creare eventi solo per categorie italiane Si può prevedere di leggere esternamente oppure far introdurre all’avvio dall’utente le categorie che devono essere considerate valide Creare nuovi output Estendere il sistema introducendo la possibilità di creare file pdf del solo programma o della sola startlist per favorire la distribuzione ai tecnici

Struttura dell’interfaccia grafica Comandi Editor Apre un Wizard per la costruzione semplificata di un’evento Console Editor help

Demo Vai alla demo