Vorrei scrivere una grammatica formale simile a BNF per descrivere l'utilizzo da riga di comando di alcuni strumenti GNU/Linux. Per esempio posso descrivere l'uso del comando cat
come:Come formalizzare correttamente l'uso della riga di comando dei comandi GNU/Linux?
(cat-command) : 'cat' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
Il problema è che non posso scrivere una grammatica preciso per alcuni comandi come md5sum
. Il mio primo tentativo di questo sarebbe il seguente:
(md5sum-command) : 'md5sum' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
(argument) : '--check'
Ma come si può vedere questa grammatica consente di specificare l'argomento --check
tutte le volte che lo si desidera, che non è corretto, come si dovrebbe usare al massimo una sola volta .
Come posso risolvere il problema? Inoltre, che tipo di grammatiche formali dovrei studiare per trattare meglio questo tipo di problemi?
Sei sicuro che la tua grammatica non sia corretta? Per me molti comandi Unix accettano tranquillamente più occorrenze dello stesso argomento, ad esempio 'ls -l -l -l'. –
Sì, hai ragione. Ma forse ci sono alcuni strumenti che non consentono ripetizioni. Potrei anche scrivere il mio programma che non consente le ripetizioni. Quindi penso che il mio problema sia ancora rilevante. –