我想寫一個類似BNF的形式語法來描述某些GNU/Linux工具的命令行用法。例如,我可以描述cat
命令的作爲使用:如何正確地形式化GNU/Linux命令的命令行用法?
(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
參數多次如你所願,這是不正確的,你應該使用它最多一次。
我該如何解決這個問題?另外,爲了更好地對待這類問題,我應該研究什麼樣的正式語法?
你確定你的語法不正確嗎?對我而言,許多Unix命令非常高興地接受多次出現的相同的參數,例如'ls -l -l -l'。 – 2010-04-08 12:16:52
是的,你是對的。但也許有一些工具不允許重複。我也可以寫我自己的程序,不允許重複。所以我認爲我的問題仍然相關。 – 2010-04-08 13:55:00