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

Post on 02-May-2015

219 views 2 download

Transcript of GENERATOR Linguaggi e Modelli Computazionali M Prof. Enrico Denti WIMMING VENT Realizzato da...

GENERATORLinguaggi e Modelli Computazionali MProf. Enrico Denti

SEWIMMING

VENT

Realizzato daIsabella Gottardi

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

Grammatica B.N.F

GrammarScope : <EVENT> <A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR>

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;};…

EVENT = 'event';INFOEVENT='infoevent';NAMEEVENT='nameevent';CATEGORY='cat';ORGANIZ='org';LOCATION='loc';TYPE='type'; …

TOKEN

Grammatica B.N.F

GrammarScope : <EVENT>

<A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR>

Informazioni dell’evento

<INFOEVENT><A_GR>nameeventcategoryorganizlocationtypestartendenddateregpoolbaselimittimereglanes <C_GR>

infoevent{nameevent :

"Memorial Elena Lago"cat : Agonistiorg : "Centro Nuoto

Tezze ASD" loc : "Tezze sul Brenta" type : "Evento ufficiale

organizzatoda Società

afferente al C.R.V." start : 06/11/2011end : 06/11/2011endreg : 04/11/2011poolbase : 25 mlimittime : "No" lanes : 6

}

PropagandaAgonistiMaster

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" }

other{speaker: "Roberto

Magnagnini" doctor: "Leonardo Valenti" manager: "Antonio Baldetti"

}

<OTHER><A_GR>

speakdoctmang<C_GR>

<TIMING><A_GR>

cronotypecronoservcronosoc<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

<PROG><A_GR>

(<datecomp><A_GR>

(<A_Q>

hourcomp

categorycomp

speccompturncomp<C_Q>

)+<C_GR >)+<C_GR>

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

Grammatica B.N.F

GrammarScope : <EVENT>

<A_GR> Infocompetition Jurycronoother Programcomp Startlist Note <C_GR>

<STARTLIST><A_GR>

(<COMPNAME>

<A_GR>

(nameturn<A_GR>

(<A_Q>

LANE

acodeanameasurnameasocabirthatimeregatimeres

<C_Q>)+

<C_GR>)+<C_GR>)+

<C_GR>

StartList

Nel formato“AAA-000000”

startlist{ compname : "50 rana" { heats 1 {

[lane : 1acode :"VEN-000000"aname : “Isabella"asurname :“Gottardi"asociety: “Adria Nuoto"abirthday : 23/06/1987atimereg: 00:00:30:80atimeres: 00:00:00:00]

} }

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

TIPO 2

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

pkg Domain Model

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

GUI

+ EditorForm

+ EditorForm

+ EventWizard

+ EventWizard

+ TreeViewASTForm

+ TreeViewASTForm

pkg Domain Model

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

AST

+ ABirthdayNode

+ ACode

+ ANameNode

+ ...

pkg Domain ModelEA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

Visitor

+ HTMLVisitor

+ TreeBuilderVisitor

+ IEventVisitor

pkg Domain Model

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

Grammar

+ SwimmingCompetitionGrammarLexer

+ SwimmingCompetitionGrammarParser

Contiene tutte le classi Lexer e Parser generate

automaticamente da Antlr

Contiene tutte le classi necessarie per la

costruzione dell’interfaccia grafica

Contiene tutte le classi che estendono Exceptions che

gestiscono le eccezioni sintattiche e semantiche

pkg Domain Model

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

Exceptions

+ ACodeException

+ ATimeException

+ ErrorNodeException

+ LaneOutOfBoundException

+ TimeOutOfBoundsException

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

class ASTEA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

CommonTree

ASTNode

+ Accept(SwimmingCompetition.Visitors.IEventVisitor) :void+ ASTNode(IToken)

Ev entNode

+ Accept(Visitors.IEventVisitor) :void+ EventNode(IToken)

FalseStartEmployeeNode

+ Accept(Visitors.IEventVisitor) :void+ FalseStartEmployeeNode(IToken)

HourNode

+ Accept(Visitors.IEventVisitor) :void+ HourNode(IToken)

InfoEv entNode

+ Accept(Visitors.IEventVisitor) :void+ InfoEventNode(IToken)

JuryNode

+ Accept(Visitors.IEventVisitor) :void+ JuryNode(IToken)

... ...

pkg Domain Model

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

AST

+ ABirthdayNode

+ ACode

+ ANameNode

+ ...

Diagramma delle classi -Visitor pkg Domain ModelEA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version

Visitor

+ HTMLVisitor

+ TreeBuilderVisitor

+ IEventVisitor

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

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: pkg Domain Model

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

EA 9.1 Unregistered Trial Version EA 9.1 Unregistered Trial Version

Exceptions

+ ACodeException

+ ATimeException

+ ErrorNodeException

+ LaneOutOfBoundException

+ TimeOutOfBoundsException

Verifica semantica

Orario immesso sbagliato

Numero di corsia superiore

al numero di corsie

dell’impianto

Codice atleta errato, previsto

nel formato “VEN-000000”

Tempo di iscrizione e tempo risultato dell’atleta sbagliati

Parser

Token

Lexer

Funzionamento del sistema (1/2)

AST

Sintax Error

Funzionamento del sistema (2/2)

AST

HTML Visitor

Tree Viisitor

Strumenti utilizzati

Linguaggio di programmazi

one

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

Console

Editor

Comandi

Editor help

Apre un Wizard per la costruzione

semplificata di un’evento

Demo

Vai alla demo