Parsing Cmdarg是否可以在子模式之外具有标志?

Parsing Cmdarg是否可以在子模式之外具有标志?,parsing,haskell,command-line,Parsing,Haskell,Command Line,我知道,如果在所有子模式中都有一个公共标志,它将被列在“公共标志”下,但该标志仍然需要位于模式构造函数之后。 有时,有一些标志与程序相关,而不是单独的模式,因此它们应该能够在模式填充之前(甚至之后)指定。例如,我的程序可以并行处理任务,而不管它运行在哪种模式。并行进程的数量由“-n”标志给出,因此命令行应类似于: myprogram -n 4 MODE1 [flags/args-for-MODE1] 这可以在CmdArgs中完成吗? 谢谢目前无法执行此操作,但有一个票证可将其添加到CmdArg

我知道,如果在所有子模式中都有一个公共标志,它将被列在“公共标志”下,但该标志仍然需要位于模式构造函数之后。 有时,有一些标志与程序相关,而不是单独的模式,因此它们应该能够在模式填充之前(甚至之后)指定。例如,我的程序可以并行处理任务,而不管它运行在哪种模式。并行进程的数量由“-n”标志给出,因此命令行应类似于:

myprogram -n 4 MODE1 [flags/args-for-MODE1]
这可以在CmdArgs中完成吗?
谢谢

目前无法执行此操作,但有一个票证可将其添加到CmdArgs:

它可能会稍微复杂一些,因为如果您的
MODE1
采用带必需参数的
-n
,而
MODE2
采用不带参数的
-n
,那么下面的意思是什么:

 myprogram -n MODE2 MODE1

它可以是mode
MODE1
-n
,值为
MODE2
,也可以是mode
MODE2
,标志为
-n
,参数为
MODE1
。不过,我相信在实现票据时我会明白这一点。

在您的示例中,我假设MODE1是MODE2的子模式;如果忽略我的最后一条评论,请意外按下enter键。如果
-n
接受一个字符串值,我会假设我需要引用MODE2使其明确,当且仅当,它是
myprogram
的标志,而不是mode
MODE1
。基本上,模式应该只考虑一个标志,如果它是在模式构造函数之后出现的,并且最接近的模式构造函数具有更高的优先级。我想在上面的例子中,它必须是模式2,因为如果你想要MODE1,你可以一直做<代码> -nMODE2 MOD1<代码>。