Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.

Slides:



Advertisements
Presentazioni simili
Introduzione ad XML Mario Arrigoni Neri.
Advertisements

Sintassi (prima parte)
Parser Bottom UP Giuseppe Morelli. Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Alberi binari di ricerca
Programmazione Procedurale in Linguaggio C++
Questionario Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°2.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Cercare informazioni sul Web. 5-2 Organizzazione dellinformazione tramite gerarchie Classificazione gerarchica Linformazione è raggruppata in un piccolo.
Unità Didattica 2 I Linguaggi di Programmazione
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
I File.
Espressioni condizionali
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
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.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
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
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
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.
21° CONGRESSO NAZIONALE Genova, giugno 2009 AIRM – Associazione Italiana Radioprotezione Medica.
Professore: Studente: Enrico Denti Thomas Ricci
Linguaggi e modelli computazionali LS
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
Everywhere Takeaway Progetto di SSCSWeb A.A. 2011/2012.
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
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
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.
Linguaggi e modelli computazionali LS Manni Tiziano
Pippo.
Interrogare il database
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Meno sprechi, stessa sicurezza: impariamo a leggere le etichette degli alimenti Torino, 11 giugno
Spunti di riflessione - attenzione alle nuove esigenze del mercato, come l’offerta di piatti vegetariani - pizzeria ancora presente all’interno dei ristoranti.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Lezione 3 Struttura lessicale del linguaggio
Microsoft Word Interfaccia grafica
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
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.
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
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.
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.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri

Sviluppo di un semplice linguaggio per la descrizione di un itinerario turistico nel centro storico di RSM il quale prevede le seguenti attività: Visita di un museo Visita di una chiesa Visita a un monumento Visita di un punto panoramico Visita libera per negozi Pranzo presso un ristorante

Definizione di un linguaggio in grado di descrivere le attività previste per creare un itinerario. Realizzare uninterprete per tale linguaggio che: accetti in ingresso una stringa di caratteri esegua unanalisi sintattica al fine di riconoscere se la stringa è una frase lecita del linguaggio esegua le azioni corrispondenti alla semantica della frase immessa Realizzazione di una rappresentazione sotto forma di albero Realizzare uno strumento grafico che visualizzi le attività previste nellitinerario e le informazioni relative ad esse

::= inizio fine ::= Partenza prevista in: alle del giorno ::= ( )+ ::= / / ::= ore : ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+ ::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= dalle alle ( )* ( )* ::= Visita negozi dalle alle ::=. euro ::= - Elenco TOKEN <TAPPATUR: Monumento: | Punto Panoramico: >

::= inizio fine ::= Partenza prevista in: alle del giorno ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+ ::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= Visita negozi dalle alle ::= dalle alle ( ) * ( )* SCOPO

::= inizio fine Ogni prevede:,, e che rappresentano la partenza è il tipo di itinerario Esempio: Partenza prevista in: Porta del Paese alle ore 12:12 del giorno 1/9/2009 Itinerario Misto: In questo caso le coordinate sono espresse in pixel, relativamente ad una cartina da me scelta ::= Partenza prevista in: alle del giorno

::= inizio fine ::=Partenza prevista in: alle del giorno ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+ ::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= Visita negozi dalle alle ::= dalle alle ( )* ( )*

Sono previste 3 tipologie di itinerario: Culturale: Prevede una o più tappe culturali Turistico: Prevede una o più tappe turistiche oppure una o più visite libere per negozi Misto : Prevede qualsiasi tipo di tappa, unendo le possibilità offerte dagli altri due tipi di itinerario ::= inizio fine ::=Partenza prevista in: alle del giorno ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+

::= inizio fine ::= Partenza prevista in: alle del giorno ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+ ::= dalle alle ( ) * ( )* ::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= Visita negozi dalle alle

::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= Visita negozi dalle alle Questa parte di grammatica esprime le attività che compongono un itinerario: La parte lessicale prevede tra lelenco di Token: Quindi: Visita di un museo TAPPACUL = Museo: Visita di una chiesa TAPPACUL = Chiesa: Visita a monumento TAPPATUR = Monumento: Visita pto panoramico TAPPATUR =Punto Visita libera per negozi Visita negozi dalle alle Pranzo presso un ristorante Ristorante: Panoramico: ::= Itinerario Misto: ( | )+ La generica tappa non contiene la visita ai negozi perché era stata inserita qui

::= inizio fine ::=Partenza prevista in: alle del giorno ::= | | ::= Itinerario Culturale: ( )+ ::= Itinerario Turistico: ( | )+ ::= Itinerario Misto: ( | )+ ::= ( | Ristorante: ) ::= ( | | Ristorante: ) ::= Visita negozi dalle alle ::= dalle alle ( )* ( )*

<InfoTappa>::=<Nome > <Coordinate> dalle <Ora> alle <Ora> (<Prezzo >)* ( <Descrizione >)* Nome ::= ( <PAROLA> )+ Descrizione ::= ( <PAROLA> )+ Data ::= <NUMERO>/<NUMERO>/<NUMERO> Ora ::= ore <NUMERO>:<NUMERO> Prezzo ::= <NUMERO>.<NUMERO> euro Coordinate ::= <NUMERO> "-" <NUMERO> Esempi di parti frasi lecite: Chiesa: Chiesa dei Cappuccini dalle ore 12:12 alle ore 12:12 Ristorante: Ristorante Il Loco dalle ore 12:00 alle ore 14: euro menu fisso Museo: Museo delle armi dalle ore 12:00 alle ore 13: euro Punto Panoramico: Stazione funivia dalle ore 15:00 alle ore 15:15 Visita negozi dalle 12:12 alle 14:00 NomeCoordinatedalle Ora alle Ora Nome Coordinate dalle Ora alle Ora PrezzoDescrizione Elenco TOKEN <TAPPATUR: Monumento: | Punto Panoramico: >

inizio Partenza prevista in: Porta del Paese alle ore 11:00 del giorno 1/9/2009 Itinerario Misto: Chiesa: Chiesa dei Cappuccini dalle ore 11:30 alle ore 12:30 Ristorante: Ristorante Il Loco dalle ore 13:00 alle ore 14: euro menu fisso Museo: Museo delle armi dalle ore 14:45 alle ore 15: euro Punto Panoramico: Stazione funivia dalle ore 15:30 alle ore 16:00 Chiesa: Chiesa San Francesco dalle ore 16:15 alle ore 17:00 Visita negozi dalle ore 17:00 alle ore 18:00 fine

La grammatica è di Tipo 2 (context-free) secondo la classificazione di Chomsky, in quanto tutte le produzioni risultano essere nella forma: Il linguaggio generato risulta essere di tipo Tipo 3 (regolare) poiché la grammatica non contiene self- embedding. A α con α (VT VN)*, A VN

La grammatica è LL(1) Utilizza al più 1 simbolo per riconoscere con certezza la produzione da scegliere starter symbols disgiunti (non è necessario ricorrere ai director symbols poiché nessun metasimbolo genera la stringa vuota). Quindi: Le frasi vengono analizzate Left-to-Right applicando la left most derivation lanalisi top-down è deterministica il riconoscitore sarà deterministico

Testo Il testo è acquisito tramite interfaccia grafica: Digitando il testo Caricando un file di testo

Testo Lexer Analisi Lessicale: vengono individuate le singole parole (Token) di una frase Sequenza di caratteri Sequenza di TOKEN

Testo Lexer Parser Analisi Sintattica: si verifica che una frase sia costruita secondo le regole grammaticali che descrivono il linguaggio Rappresentazione interna della frase AST Sequenza di caratteri Sequenza di TOKEN

La classe DepthFirstVisitor (generata da JTB) è stata estesa da due sottoclassi: TreeVisitor visita lAPT e ne fornisce una rappresentazione grafica sotto forma di albero (la quale verrà passata allinterfaccia grafica). LuoghiVisitor visita lAPT e fornisce un elenco di tutte le tappe che costituiscono litinerario tranne le visite ai negozi (servirà per realizzare la visualizzazione dellitinerario). NegoziVisitor visita lAPT e fornisce un elenco delle eventuali visite ai negozi (servirà per realizzare la visualizzazione dellitinerario). Ciascun visitor realizza una visita di tipo depth first avvalendosi del meccanismo del double dispatch

TreeVisitor LuoghiVisitor NegoziVisitor

Parte del controllo semantico è effettuato direttamente dal Parser, i controlli più complicati sono invece eseguiti dagli oggetti ControlloOrari e ControlloMappa I controlli effettuati direttamente dal Parser sono: Controllo della data Data ::= "/" "/" Controllo dellora Ora ::= "ore" ":" Considerando che il Token numero è:

I controlli effettuati dalloggetto ControlloOrari (package Semantica) sono: Orario di inizio visita di una Tappa minore o uguale a quello della fine ( t i Visita n t f Visita n ) Orario di fine visita della Tappa precedente minore o uguale allorario di inizio visita della Tappa successiva ( t f Visita n t i Visita n+1 ) Esempio: Chiesa: Chiesa dei Cappuccini dalle ore 11:30 alle ore 12:30 Ristorante: Ristorante Il Loco dalle ore 13:00 alle ore 14: euro menu fisso 11:30<12:30 corretto!! 12:30<13:00 corretto!!

ControlloMappa (package Semantica) Problema:Dato un di una tappa, deve indicare il giusto punto sulla cartina (consistenza). ::= dalle alle ( )* ( )* Soluzione: Prevedere una tabella che abbia come elementi (Nome, Coordinate) ed effettuare controllo : inutile inserire in input, difficoltà se si vuole cambiare la cartina, in caso il luogo non si trovi in tabella si ha errore semantico anche se il luogo esiste Lasciare il controllo semantico alloperatore che immette linput: possibilità di inserire qualsiasi tappa, modalità della visualizzazione è provvisoria (sviluppi futuri: tecnologie di localizzazione google maps, GPS)

ControlloMappa: Problema: Dato un di una tappa, deve indicare il giusto punto sulla cartina (consistenza). Scelta: Soluzione intermedia: ControlloMappa dispone di una HashMap contenente le indicazioni di gran parte delle tappe da poter visitare. Per ogni luogo: Se è presente nellelenco: vengono segnalati errori in caso di coordinate non corrette Se non è presente nellelenco: il controllo semantico è lasciato alloperatore

Linguaggio: Java (jdk1.6.0_10) : Ambiente di sviluppo: NetBeans IDE 6.5 Generazione automatica parser: JavaCC 4.2 Strumento per la generazione automatica delle classi necessarie a creare lalbero sintattico (AST) e per limplementazione di Visitor che operano depth-first: Java Tree Builder Generazione della documentazione: JJDoc

Implementa il Lexer: contiene il metodo getNextToken() il quale implementa lASF deterministico che riconosce i token descritti dalle espressioni regolari Implementa il Parser: chiama il Lexer ogni volta che necessita del prossimo token. Contiene un metodo per ogni simbolo non terminale presente nella specifica della grammatica Ogni chiamata al metodo getNextToken() restituisce un oggetto di questa classe

View Contiene le interfacce grafiche ed il manager dellapplicazione Semantica Contiene le classi usate nel controllo semantico parserItinerario Contiene le classi per lo scanning, il parsing e la costruzione dellAST syntaxTree Contiene le classi necessarie per la costruzione dellAST visitor Contiene i Visitor creati da JTB in automatico, TreeVisitor, LuoghiVisitor e NegoziVisitor

Cartina che mostra le Tappe dellitinerario Informazioni relative alle Tappe dellitinerario

Per il collaudo del sistema sono stati scritti alcuni significativi file di codice che verificassero: Creazione corretta dellalbero utilizzando le 3 tipologie di itinerario: turistico, culturale e misto Segnalazione di errori sintattici Segnalazione di errori semantici da parte del parser (Ora, Data) Segnalazione di errori semantici da parte delle classi nel package Semantica (orarioPrecedente ) Corretta visualizzazione dellitinerario

Rendere il riconoscitore capace di identificare un maggior numero di attività che compongono un itinerario Prevedere un miglior sistema di localizzazione delle tappe Automatizzare linserimento di una tappa dellitinerario

DEMO