La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggio per la produzione di grafici Pierpaolo Giuliani Matr. 290007 Prof: Enrico Denti Linguaggi e modelli computazionali LS.

Presentazioni simili


Presentazione sul tema: "Linguaggio per la produzione di grafici Pierpaolo Giuliani Matr. 290007 Prof: Enrico Denti Linguaggi e modelli computazionali LS."— Transcript della presentazione:

1 Linguaggio per la produzione di grafici Pierpaolo Giuliani Matr Prof: Enrico Denti Linguaggi e modelli computazionali LS

2 Realizzazione di un semplice linguaggio per produrre grafici Occorre: Progettare un linguaggio che sia in grado di esprimere le caratteristiche di un particolare grafico. Realizzare un tool che supporti tale linguaggio: accetti in ingresso una descrizione del grafico nel linguaggio realizzato; esegua unanalisi sintattica al fine di riconoscere se lo schema è scritto in modo lecito per il linguaggio; esegua le azioni corrispondenti alla semantica dello schema immesso. Realizzare uno strumento grafico che: visualizzi il risultato finale del grafico prodotto

3 Grafico { tipo grafico{'Categoria','Valore',VERT, NORMAL_AREA, { }; nome finestra{grafico}; titolo grafico{'grafico Area'}; sottotitolo{[ Il grafico area permette di rappre- sentare serie di dati…. ],CORSIVO,15,ALTO}; sfondo finestra{BIANCO}; sfondo grafico{GRIGIOCHIARO}; } { Prima,GIALLO, [ Categoria1,1.0] [ Categoria2,4.0] [ Categoria3,3.0] [ Categoria4,5.0] [ Categoria5,5.0] } { Seconda,VERDE, [ Categoria1,5.0] [ Categoria2,7.0] [ Categoria3,6.0] [ Categoria4,8.0] [ Categoria5,4.0] } { Terza,ROSSO, [ Categoria1,4.0] [ Categoria2,3.0] [ Categoria3,2.0] [ Categoria4,3.0] [ Categoria5,6.0] }

4 TOKEN : { | Tipologie di grafico Parte lessicale

5 TOKEN : { | Grafici ottenibili

6 TOKEN : { | Caratteristiche del grafico

7 | | )* | "0"> | "." ( )*> | | > | | )+ > Associare caratteristiche alla descrizione del grafico

8 | | )* | "0"> | "." ( )*> | | > | | )+ > Caratteristiche temporali

9 | | )* | "0"> | "." ( )*> | | > | | )+ > Valori presenti nel grafico

10 | | )* | "0"> | "." ( )*> | | > | | )+ > Rappresentazione stringhe presenti nel grafico

11 Il simbolo iniziale Scope della grammatica Scope ::= "Grafico" "{" "tipo grafico" "{" Tipo "}" ";"Tipo "nome finestra" "{" ( StringaComposta )? "}" ";"StringaComposta "titolo grafico" "{" ( StringaComposta )? "}" ";" "sottotitolo" "{" ( Sottotitolo )? "}" ";"StringaCompostaSottotitolo "sfondo finestra" "{" ( )? "}" ";" "sfondo grafico "{" ( )? "}" ";" "}" Lo Scope della grammatica richiede: tipo grafico descrizione del grafico da realizzare nome finestra titolo grafico sottotitolo sfondo finestra sfondo grafico permettono il settaggio di parametri generali relativi alla visualizzazione del grafico stesso StringaComposta ::= ( )*

12 Sottotitolo ::= "[" StringaComposta "]" ","StringaComposta ProprietaCarattereProprietaCarattere ", ProprietaCarattere ::= "," Descrizione del sottotitolo Esempio: sottotitolo{ [DifferenceChart permette di realizzare grafici di Differenza], GRASSETTO, 15, BASSO };

13 Tipo – costruzione del grafico Classificazione Grafici: SingleVal: serie che compongono il grafico a singolo valore MultiVal: serie che compongono il grafico a più valori, suddivisi in: Orientati Non orientati Tipo ::= ( SingleVal | MultiVal )SingleValMultiVal SingleVal ::= ", "," ( "[" SerieCategVal "]" )+SerieCategVal MultiVal ::= NomeAssi ","NomeAssi ( ( "," ConOrient | NoOrient ) )ConOrientNoOrient NomeAssi ::= StringaCompostaStringaComposta "," StringaComposta

14 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt Grafico = parametro generale + serie dati Grafico = tipologia "," ( attributi generali serie ( serie dati)+ )+ GenSerie ::= ", ( )? Due categorie di grafici multival: Stringa descrittiva serie Colore serie

15 Modellazione dei Dati delle Serie: SerieCategVal ::= "," SerieXY ::= "," DataValore ::= Data "," Data GanttData ::= "," Data "," DataData SerieStepData ::= DataValore "," OrarioDataValoreOrario HistogramData ::= ";" Data ::= "-" "-" Orario ::= : [ Categoria1, 3.24] [1.13, 700.2] [ Ottenere_Approvazione, 9-APR-2010,10-APR-2010] [ 2-MAG-2009, 124.1] [19-FEB-2010, 8.0, 16:0] [4.6; 6.6; 3.0; 7.3;]

16 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt Category ::= "," ( "{" GenSerie ","GenSerie ( "[" SerieCategVal "]" )+SerieCategVal "}" )+ Raggruppa diverse tipologie di grafici: Barre 2D / 3D stacked Area Classica Stacked Line Population

17 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt XY ::= "," ( "{" GenSerie ","GenSerie ( "[" SerieXY "]" )+SerieXY "}" )+ Raggruppa 2 tipologie di grafici: Area XY Barre XY

18 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt StepLine ::= "," ( "{" GenSerie ","GenSerie ( "[" SerieStepData "]" )+SerieStepData "}" "," "tratteggio:" "," "spessore: )+

19 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt Histogram ::= "," ( "{" GenSerie ","GenSerie "[" ( HistogramData )+ "]" ","HistogramData "}")+

20 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt TimeSeries ::= "," ( "{" GenSerie ","GenSerie ( "[" DataValore "]" )+DataValore "}" )+

21 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt Difference ::= "," DifferenceDataDifferenceData "MINORE" "{" "}" "," "MAGGIORE" "{" "}" DifferenceData ::= "{" GenSerie ","GenSerie ( "[" DataValore "]" )+DataValore "}"

22 Grafici orientati Grafici non orientati ConOrient ::= ( CategoryCategory | XYXY | StepLineStepLine | Histogram )Histogram NoOrient ::= ( TimeSeriesTimeSeries | DifferenceDifference | Gantt )Gantt Gantt ::= "," ( "{" GenSerie ","GenSerie ( "[" GanttData "]" )+GanttData "}" )+

23 La grammatica è di Tipo 2 (context-free) secondo la classificazione di Chomsky, in quanto tutte le produzioni risultano essere nella forma Il linguaggio generato dalla grammatica risulta essere di Tipo 3 (regolare) in quanto la grammatica non contiene self-embedding, ovvero non prevede simboli non terminali autoinclusivi del tipo: A β A δ dove A є VN e δ,β є V+ A α con α (VT VN)*, A VN Non cè vincolo α != є

24 La grammatica è LL(1): Ogni metasimbolo a sinistra di più produzioni ha starter simbols delle parti destre di produzioni alternative disgiunti (NECESSARIA) il riconoscitore utilizza al più un simbolo per riconoscere con certezza la produzione da scegliere Nessun metasimbolo genera stringa vuota (SUFFICIENTE)

25 Visitor AST Parser Scanner Specifica Specifica del grafico secondo grammatica Analisi lessicale (Lexer o Scanner) Data una sequenza di caratteri restituisce i token che compaiono Analisi sintattica-semantica (Parser) Data una sequenza token verifica attinenza alle regole grammaticali Produce l AST Visitor Percorre lalbero APT mediante la tecnica del double dispatch

26 Chart Contiene le classi per la gestione generale del grafico e dei diversi dataset ChartCreator Contiene tutte le classi per realizzare il grafico Dataset Contiene tutte le classi per gestire correttamente le diverse serie dati dei differenti grafici ProduChart.gui Contiene le interfacce grafiche ed il manager dellapplicazione Visitor Contiene i Visitor creati da JTB in automatico ProduChartVisitor Contiene i visitor realizzati che estendono la classe DepthFirstVisitor syntaxTree Contiene le classi necessarie per la costruzione dellAST parser Contiene le classi per lo scanning, il parsing

27

28 Dataset Contiene tutte le classi per gestire correttamente le diverse serie dati dei differenti grafici

29 ChartCreator Contiene tutte le classi per realizzare il grafico

30 Lexer: - contiene il metodo getNextToken - riconosce i token descritti dalle espressioni regolari Lexer: - contiene il metodo getNextToken - riconosce i token descritti dalle espressioni regolari 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

31 Automaticamente generato da JTB Pattern visitor: Ciascun visitor realizza una visita di tipo depth-first avvalendosi del meccanismo double dispatch. I visitor hanno un metodo visit per ogni classe rappresentante un nodo dell APT. Le classi visitate accetteranno la visita richiamando il metodo visit con argomento this. Pattern visitor: Ciascun visitor realizza una visita di tipo depth-first avvalendosi del meccanismo double dispatch. I visitor hanno un metodo visit per ogni classe rappresentante un nodo dell APT. Le classi visitate accetteranno la visita richiamando il metodo visit con argomento this. Esempio di classe della tassonomia

32 Automaticamente generato da JTB ProduChartVisitor Percorre lalbero ed istanzia tutti gli oggetti neces- sari per produrre il grafico Effettua gli opportuni controlli semantici Correttezza delle date: Correttezza degli orari: ProduChartTreeVisitor Percorre lalbero e costruisce una struttura TreeNode ProduChartXmlVisitor Percorre lalbero e costruisce un documento XML Data ::= "-" "-" Orario ::= :

33 Ulteriori funzionalità: Salvataggio del programma in XML Più si struttura linformazione, meno fatica si fa ad elaborarla Salvataggio del grafico prodotto in PDF Esportare il grafico come immagine

34 Oltre al salvataggio, prevedere la lettura dei dati delle serie da XML Ampliare il numero dei grafici supportati Ampliare le funzionalità esprimibili dallutente mediante il linguaggio Console per la scelta del colore Stili del grafico (tratteggio,ecc.) WIZARD per una definizione più semplice del file del grafico nel linguaggio realizzato Inserimento di più grafici contemporaneamente Per confronto Per modellare diversi aspetti afferenti a grafici diversi

35 Linguaggio: Java (jdk1.6.0_10) Ambiente di sviluppo: NetBeans IDE 6.8 Generazione automatica parser: JavaCC 5.0 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 Strumento di produzione grafici: JFreeChart

36

37


Scaricare ppt "Linguaggio per la produzione di grafici Pierpaolo Giuliani Matr. 290007 Prof: Enrico Denti Linguaggi e modelli computazionali LS."

Presentazioni simili


Annunci Google