La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi e Modelli Computazionali M Prof. Enrico Denti

Presentazioni simili


Presentazione sul tema: "Linguaggi e Modelli Computazionali M Prof. Enrico Denti"— Transcript della presentazione:

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


Scaricare ppt "Linguaggi e Modelli Computazionali M Prof. Enrico Denti"

Presentazioni simili


Annunci Google