Replies: 3 comments 2 replies
-
modificherei la riga di nome in nome = $tipo-$data-?fila-$formato-?extra.$ext e aggiungerei note nella forma: Nota regexp: |
Beta Was this translation helpful? Give feedback.
-
Va detto che le regexp sono supportate dalle librerie standard dei linguaggi in genere, mentre altre formalismi no. Siccome abbiamo pochissime regexp, potremmo anche documentarle in stile BNF e lasciarle così. |
Beta Was this translation helpful? Give feedback.
-
Il DSL è stato definito in csunibo/synta. La stessa repo contiene anche degli strumenti command line per farne formatting e conversione a regexp (di go, compatibili con js) o conversione a una nostra struttura json. |
Beta Was this translation helpful? Give feedback.
-
Le regexp sono poco potenti (a volte), stringenti, o non chiare (sempre):
Si potrebbe migliorare la vita delle persone usando qualcosa di più espressivo e chiaro:
Se per le specifiche usassimo una sintassi a-la bnf tipo questa: (la BNF viene spiegata a programmazione il primo anno, quindi è più o meno chiara a tutti):
Questo approccio, rispetto alle regexp in line attuali, avrebbe una serie di vantaggi:
001
e il file n50050
). Questo particolare esempio va considerato con cautela (valutare la validità sapendo sempre il numero di file in una cartella è una assunzione forte), ma non c'è dubbio che ci lascerebbe più libertà.Uno downside che vedo:
Non sono generali e supportate ovunque come le regexp. Dovremo scrivere un piccolo parser per gli strumenti dove voglaimo usarle. Soluzione: scriviamo questo piccolo DLS in un linguaggio di specifica di linguaggi (i.e., flex e yacc, ma realisticamente usiamo roba più moderna) che sia in grado di produrre parser per una serie di linguaggi comuni (i.e., almeno js e qualcosa di basso livello tipo go/c/rust/etc). Possiamo guardare su wikipedia cosa è disponibile:
https://en.wikipedia.org/wiki/Comparison_of_parser_generators
Beta Was this translation helpful? Give feedback.
All reactions