我想写一个类似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