いくつかの GNU/Linux ツールのコマンド ラインの使用法を説明するために、BNF のような正式な文法を書き留めたいと思います。たとえば、cat
コマンドの使用法を次のように説明できます。
(cat-command) : 'cat' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
問題は、 などの一部のコマンドの正確な文法を書き留めることができないことmd5sum
です。それに対する私の最初の試みは次のとおりです。
(md5sum-command) : 'md5sum' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
(argument) : '--check'
--check
しかし、ご覧のとおり、この文法では引数を何度でも指定できます。これは、多くても 1 回しか使用できないため、正しくありません。
どうすれば修正できますか?また、この種の問題をより適切に処理するには、どのような形式文法を勉強すればよいでしょうか?