Top Banner
File Name Manager Progetto di Linguaggi e Modelli Computazionali LS di Tomaiuoli Giuseppe mat 0196947
23

File Name Manager

Dec 30, 2015

Download

Documents

claudia-dale

File Name Manager. Progetto di Linguaggi e Modelli Computazionali LS di Tomaiuoli Giuseppe mat 0196947. Visione. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: File Name Manager

File Name Manager

Progetto di Linguaggi e Modelli Computazionali LS

diTomaiuoli Giuseppe mat 0196947

Page 2: File Name Manager

Visione

A tutti noi è capitato negli ultimi anni, dopo una vacanza o dopo una festa o dopo un qualsiasi evento di avere una quantità di foto spaventosa, in formato digitale, con nomi assurdi, dovuti al setup della fotocamera digitale e di doverli quindi modificare uno per uno, magari scrivendo il nome dell’evento e spesso anche numerandole. Perché non inventarsi un linguaggio specifico che consenta di fare questo in modo rapido ed indolore?

Page 3: File Name Manager

Desiderio

• Aggiungi a tutti i file “sanSiro”

• Cambia “DWC” con “compleanno”

• Aggiungi codice numerico di 5 cifre a partire da 11. (Es. 00011, 00012 ecc…).

• Togli “SonyDigitalCamera” da tutti i file..

• ………..

• ………..

Page 4: File Name Manager

Grammatica (versione 1)

• <Program> ::= <Modify>

• <Modify> ::= Change <Old> <New> | Less <Old> | Add <New> <Where>

• <Old> ::= StringChars

• <New> ::= <Old> | Hm Code

• <Where> ::= Pre | Post

Page 5: File Name Manager

Grammatica terminali (versione 1)

• Change = [C]• Less = [L]• Add = [A]• StringChars = '|'{PrintableNot}+'|'• Pre =[H]• Post =[T]• Hm= [123456789]• {PrintableNot}={Printable} -["\/:*?<>|]• Code = 0{Digit}+

Perché le “|”?Perché {Printable} comprende anche i

bianchi

Caratteri non accettati nei nomi

dei file da Windows

Perché “0” ?Hm≠Code

Page 6: File Name Manager

Semantica

• Add aggiunge una stringa o un codice al nome del file come prefisso o suffisso (Pre o Post) definito da Where

• Change modifica il nome del file sostituendo la parte “Old” con la parte “New”

• Less toglie la parte “Old” dal nome del file• New è la parte da aggiungere, può essere

una stringa o un codice numerico• Code è il codice formato da “Hm” cifre (es. 4 in 5

cifre = 00004)

Page 7: File Name Manager

Realizzazione

a. Da linea di comando (poco “user friendly” è antipatico come il DOS… agli utenti “normali”)

b. Console Grafica (molto gradita ai più, vedi successo di “Windows”)

c. Comandi Vocali (molto comodo da utilizzare, un po’ complicato da settare, difficoltà per DWC)

d. Altro…… (visto l’ambito di questo progetto non è il caso di addentrarsi in implementazioni particolarmente sofisticate)

And the Winner is….

Page 8: File Name Manager

Idea del Prototipo

Page 9: File Name Manager

Scelte Progettuali e Strumenti 1• Linguaggio di Programmazione: JAVA• Strumento di sviluppo IDE : NetBeans• Strumento di sviluppo UML: JUDE• Scanner e Parser sono gratis con quasi tutti

gli strumenti• GoldParser Builder consente:

– separare la grammatica (EBNF)– parsing table – testare nel framework – implementare il Parser in diversi Linguaggi– Maggiore potenza in quanto è LALR

• Interprete: GoldParser Engine

Page 10: File Name Manager

Scelte Progettuali e Strumenti 2• JavaCC consente:

– Di sviluppare scanner e parser a partire dal file della grammatica .jj

– non consente di testare la grammatica

• JTB abbinato a JavaCC consente:– Di creare l’albero sintattico astratto APT– Modificare la semantica senza modificare il

file della grammatica– Implementare facilmente il pattern Visitor

Page 11: File Name Manager

Scelte Progettuali e Strumenti 3

Quindi?:

• Essendo la grammatica LL(1) non è necessario sfruttare la maggiore potenza di GP che è LALR

• Una volta testata la grammatica con GP si sviluppano parser e scanner e APT con JTB & JavaCC

Page 12: File Name Manager

Definizione della Grammatica per JavaCC e JTBvoid Input() :{ }{ modifica() <EOF> }

void modifica():{ }{ <CHANGE> <OLD> nuova()

| <LESS> <OLD>| <ADD> nuova() where()

} void nuova():{ } { <OLD>

|<HM> <CODE>}

void where():{}{ <PRE>

|<POST>}

Page 13: File Name Manager

Grammatica - TerminaliTOKEN:{<CHANGE:"C">}TOKEN:{<ADD:"A">}TOKEN:{<LESS:"L">}TOKEN:{<PRE:"H">}TOKEN:{<POST:"T">}TOKEN:{<HM:["1"-"9"]>}TOKEN:{<CODE:"0"(["0"-"9"])+>}

TOKEN:{<OLD:"|"["$","0"-"9","A"-"Z","_","a"-"z","!"," ","-","+", "£","%","&","(",")","[","]","{","}","^",",",".", ";","ò","à","ç","°","ù","§","è","é","ì","'"]

(["$","0"-"9","A"-"Z","_","a"-"z","!"," ","-","+", "£","%","&","(",")","[","]","{","}","^",",",".", ";","ò","à","ç","°","ù","§","è","é","ì","'"])*"|">}

Page 14: File Name Manager

Linguaggio• Frasi Lecite:

– C |stirnga| (|stringa| o numero di Cifre e Codice Iniziale) • C |pippo| |pluto| o C |pippo| 7 05

– L |stringa|• L |pluto|

– A (|stringa| o numero di Cifre e Codice) dove (prefisso = H suffisso = T)

• A |pippo| H o A 7 08 T

• Proprietà del Linguaggio:– Generabile– Decidibile– Cardinalità infinita (stringhe e codice)

• Non c’è la Stringa Vuota ε, non necessaria• Riconoscitore: ASF, RSF

Page 15: File Name Manager

Albero di DerivazioneModifica

CHANGE OLD New

C |pippo| HM CODE

5 07

Page 16: File Name Manager

Albero di DerivazioneModifica

CHANGE OLD New

C |DWC| OLD

|28-05-2003|

Page 17: File Name Manager

Albero di DerivazioneModifica

ADD New Where

PRE

H

A HM CODE

06545

Page 18: File Name Manager

Architettura

Page 19: File Name Manager

Diagramma delle Classi

Implementazion

e Pattern Visitor

Page 20: File Name Manager

Demo

Page 21: File Name Manager

Limiti e Sviluppi Futuri• Non è stata implementata la possibilità di riordinare i

file in un modo differente dall’ordine alfabetico ….• Si possono aggiungere ulteriori TOKEN alla

grammatica per gestire Date, Estensione dei File, ecc …

• Sicuramente è migliorabile dal punto di vista della grafica, dell’efficienza e dei tempi di esecuzione

• Si possono aggiungere funzionalità che tengano conto di caratteri “jolly”

• La possibilità di salvare una copia diversa dei file con i nuovi nomi in altre locazioni invece di modificarne i nomi nella posizione corrente

• Ecc …

Page 22: File Name Manager

Conclusioni

Dato che non si voleva e doveva sviluppare un prodotto commerciale ma solo un prodotto che desse la possibilità di fare esperienza con gli strumenti e testare la preparazione sugli argomenti del corso si sono trascurate alcune delle parti precedentemente evidenziate.

Magari in futuro si potranno migliorare e sviluppare al fine di ottenere un prodotto commerciale.

Page 23: File Name Manager

Fine