我想写一个类似 BNF 的形式语法来描述一些 GNU/Linux 工具的命令行用法。例如,我可以将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
多次指定参数,这是不正确的,因为您应该最多使用一次。
我该如何解决?另外,为了更好地处理这类问题,我应该学习什么样的形式语法?