La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

GENERATOR Linguaggi e Modelli Computazionali M Prof. Enrico Denti WIMMING VENT Realizzato da Isabella Gottardi.

Presentazioni simili


Presentazione sul tema: "GENERATOR Linguaggi e Modelli Computazionali M Prof. Enrico Denti WIMMING VENT Realizzato da Isabella Gottardi."— Transcript della presentazione:

1 GENERATOR Linguaggi e Modelli Computazionali M Prof. Enrico Denti WIMMING VENT Realizzato da Isabella Gottardi

2 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

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

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

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

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

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

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

9 Struttura degli eventi Ogni evento è costituito da Informazioni sullevento stesso Giuria Cronometristi Altro personale Programma dellevento Elenco di partenza degli atleti Note eventuali Note

10 Grammatica B.N.F GrammarScope : Infocompetition Jurycronoother Programcomp Startlist Note Scopo della Grammatica 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;}; … 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;}; … EVENT = 'event'; INFOEVENT='infoevent'; NAMEEVENT='nameevent'; CATEGORY='cat'; ORGANIZ='org'; LOCATION='loc'; TYPE='type'; … EVENT = 'event'; INFOEVENT='infoevent'; NAMEEVENT='nameevent'; CATEGORY='cat'; ORGANIZ='org'; LOCATION='loc'; TYPE='type'; … TOKEN

11 Grammatica B.N.F GrammarScope : Infocompetition Jurycronoother Programcomp Startlist Note Informazioni dellevento nameevent category organiz location type start end enddatereg poolbase limittimereg lanes nameevent category organiz location type start end enddatereg poolbase limittimereg lanes 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

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

13 Grammatica B.N.F GrammarScope : Infocompetition Jurycronoother Programcomp Startlist Note Programma dellevento ( ( hourcomp categorycomp speccomp turncomp )+ ( ( hourcomp categorycomp speccomp turncomp )+ program { date : 15/09/09 { [ hour : 12:00 category : Senior speciality : "50 rana" turn : heats ] [ hour : 12:15 category : Senior speciality : 100 stile" turn : heats ] } Esordienti A, Ragazzi, Juniores, Master25, Master30, ecc… Serie, Semifinale, Finale

14 Grammatica B.N.F GrammarScope : Infocompetition Jurycronoother Programcomp Startlist Note ( (nameturn ( LANE acode aname asurname asoc abirth atimereg atimeres )+ ( (nameturn ( LANE acode aname asurname asoc abirth atimereg atimeres )+ StartList Nel formato AAA startlist { compname : "50 rana" { heats 1 { [ lane : 1 acode :"VEN " aname : Isabella" asurname :Gottardi" asociety: Adria Nuoto" abirthday : 23/06/1987 atimereg: 00:00:30:80 atimeres: 00:00:00:00 ] }

15 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 A α con α є (VT U VN)* ed A є VN A α con α є (VT U VN)* ed A є VN A α1 A α2 con A є VN e α1, α2 є (VN U VT)+ A α1 A α2 con A є VN e α1, α2 є (VN U VT)+

16 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) !!!

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

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

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

20 Errori lessicali e sintattici vengono rilevati direttamente da Lexer e da Parser tramite leccezione ErrorNodeException qualora venga inserito un nodo errore nellAST, sono visualizzate a video allutente mediante un messaggio nella console. Errori semantici gestiti: Verifica semantica Orario immesso sbagliato Numero di corsia superiore al numero di corsie dellimpianto Codice atleta errato, previsto nel formato VEN Tempo di iscrizione e tempo risultato dellatleta sbagliati

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

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

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

24 Limiti e sviluppi futuri Per il momento è possibile creare eventi solo per categorie italiane Si può prevedere di leggere esternamente oppure far introdurre allavvio dallutente 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

25 Struttura dellinterfaccia grafica Console Editor Comandi Editor help Apre un Wizard per la costruzione semplificata di unevento

26 Demo Vai alla demo Vai alla demo


Scaricare ppt "GENERATOR Linguaggi e Modelli Computazionali M Prof. Enrico Denti WIMMING VENT Realizzato da Isabella Gottardi."

Presentazioni simili


Annunci Google