Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCarlotta Mosca Modificato 10 anni fa
1
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
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 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
4
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…
5
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.
6
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.
7
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…
8
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
9
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
10
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;}; …
11
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
12
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" }
13
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
14
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 " aname : “Isabella" asurname :“Gottardi" asociety: “Adria Nuoto" abirthday : 23/06/1987 atimereg: 00:00:30:80 atimeres: 00:00:00:00 ] } Nel formato “AAA ”
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 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
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 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
18
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)
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 dell’evento natatorio Tree Visitor, produce a video un albero della frase analizzata
20
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 ” Tempo di iscrizione e tempo risultato dell’atleta sbagliati Numero di corsia superiore al numero di corsie dell’impianto Orario immesso sbagliato
21
Funzionamento del sistema (1/2)
Parser Token Lexer Sintax Error AST
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 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
25
Struttura dell’interfaccia grafica
Comandi Editor Apre un Wizard per la costruzione semplificata di un’evento Console Editor help
26
Demo Vai alla demo
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.