110 likes | 249 Views
un nuovo modo di gestire il filesystem…. SQL File Manager. Corso di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Presentazione di Luca Nardelli. Scopo del progetto. Definizione di un linguaggio “sql like” per descrivere query sul filesystem.
E N D
un nuovo modo di gestire il filesystem…. SQL File Manager Corso di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Presentazione di Luca Nardelli
Scopo del progetto • Definizione di un linguaggio “sql like” per descrivere query sul filesystem. • Sviluppo di un interprete che consenta di eseguire le operazioni specificate per mezzo del linguaggio. • Sviluppo di un filemanager multipiattaforma che sfrutti l’interprete per la gestione dei file.
Stato dell’arte • Miriadi di tool di ricerca che permettono, in modo efficiente (anche sfruttando l’indicizzazione), di cercare file in base a criteri personalizzati. Copiare, spostare, cancellare i file rimane un operazione manuale. • Linguaggi di script come bash/bat che permettono di effettuare una qualunque elaborazione su file e direttori in modo veloce. Spesso di difficile apprendimento per l’utente.
SQL File Manager • Permette di eseguire ricerche sul filesystem in base a diversi criteri di ricerca: select * from /home wherenamelike ‘%.tmp’ or (date < ’01/01/2005’ and size < 3k); • Permette di eseguire diverse operazioni sui file mediante script: copy filesfrom /optto /home where … delete * from /tmp … • Sfrutta un linguaggio simile all’sql, standard per le query su base dati.
Grammatica EBNF S ::= Query | <EOF> Query ::= ( Select | Copy | Delete ) (<RECURSIVE> )? <SEMICOLON> Select ::= <SELECT> FileTypeFrom ( Where )? Copy ::= <COPY> FileTypeFromTo ( Where )? ( <OVERRIDE> )? Delete ::= <DELETE> FileTypeFrom (Where )? From ::= <FROM> FileName ( <COMMA> FileName )* To ::= <TO> FileName FileName ::= ( <FILE> | <EXTFILE> ) FileType ::= ( <FOLDERS> | <FILES> | <STAR> ) Where ::= <WHERE> OrExpression OrExpression ::= AndExpression ( <OR> AndExpression )* AndExpression ::= SearchRule (<AND> SearchRule )* SearchRule ::= FileNameSearchRule | FileDateSearchRule | FileSizeSearchRule | <LPAR> OrExpression <RPAR> FileNameSearchRule ::= <FILENAME> ( Operator | <LIKE> ) <STRING> FileDateSearchRule ::= <DATEID> Operator <STRING> FileSizeSearchRule ::= <SIZEID> Operator <SIZE> Operator ::= ( <EQUAL> | <NE> | <LT> | <LE> | <GT> | <GE> )
Considerazioni • Grammatica di tipo 2 “context free” con self-embedding. • La grammatica è LL(1), l’analizzatore guardando avanti di uno sa sempre quale regola applicare (starter symbol disgiunti). • Riconoscitore PDA deterministico
Implementazione • Linguaggio utilizzato: Java 1.6 • Utilizzate le nuove funzioni soprattutto per le JTable (ordinamento, filtri,…) • Strumenti automatici utilizzati: JavaCC • Di semplice utilizzo e molto diffuso • Analisi top-down discendente • Ambiente di sviluppo: Eclipse
Il Parser • Implementato in SFMParser • Utilizzato come singleton • Utilizza lo scanner generato da javacc • Restituisce una struttura di tipo query per ogni istruzione, null in caso di EOF
Conclusioni e sviluppi futuri SQL File Manager è un esempio di come un linguaggio possa essere utile e talvolta necessario per automatizzare le funzionalità di un software. Sviluppi futuri possono comprendere: • Ricerca sul filesystem ad indice. • Estensione delle funzionalità. • Implementazione di un servizio di logging.