Je voudrais écrire une grammaire formelle de type BNF pour décrire l'utilisation en ligne de commande de certains outils GNU/Linux. Par exemple, je peux décrire l'utilisation de la commande cat
comme:Comment formaliser correctement l'utilisation de la ligne de commande des commandes GNU/Linux?
(cat-command) : 'cat' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
Le problème est que je ne peux pas écrire une grammaire précise pour certaines commandes telles que md5sum
. Ma première tentative qui serait la suivante:
(md5sum-command) : 'md5sum' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
(argument) : '--check'
Mais comme vous pouvez le voir cette grammaire vous permet de spécifier l'argument --check
autant de fois que vous le souhaitez, ce qui est incorrect que vous devez l'utiliser au plus une fois .
Comment puis-je résoudre ce problème? Aussi, quel genre de grammaires formelles je devrais étudier pour mieux traiter ce genre de problèmes?
Etes-vous sûr que votre grammaire est incorrecte? Pour moi, beaucoup de commandes Unix acceptent des occurrences multiples du même argument, par exemple 'ls -l -l -l'. –
Oui, vous avez raison. Mais peut-être y a-t-il des outils qui ne permettent pas les répétitions. Je peux aussi écrire mon propre programme qui ne permet pas les répétitions. Donc, je pense que mon problème est toujours pertinent. –