首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docopt:为什么不解析这种用法?

Docopt:为什么不解析这种用法?
EN

Stack Overflow用户
提问于 2018-04-07 04:37:32
回答 1查看 191关注 0票数 0

我的用法:

代码语言:javascript
复制
Usage:
  prog at (<v1> [<v1>]) [(before <v2>)] (alarm|email)

我的命令行args:

代码语言:javascript
复制
at 4 alarm

在我看来,atalarm的出现将模糊值4定位为v1v2。由于v2总是由before领导,我们可以看出4v1

然而,它并没有被解析。看我,试试看

有人知道为什么它没有被解析,以及我如何使它在最小程度上改变用法的情况下进行解析?请注意,在使用中,我试图实现一种更自然的语言类型的接口,因此重新安排语法可能有点困难。

编辑:

几次尝试:

  • 它分析如果我零件
  • 它不解析如果我args中的子句
  • 它不解析如果我做以上两件事

注:在github上提出的相同问题:https://github.com/docopt/docopt/issues/412

EN

回答 1

Stack Overflow用户

发布于 2018-05-27 18:12:47

Docopt似乎不支持其他参数前面的可选参数,除非它们是选项。解析at 4 before alarm的尝试表明,before被识别为<v1>的第二个位置参数。

代码语言:javascript
复制
{
  "<v1>": [
    "4", 
    "before"
  ], 
  "<v2>": null, 
  "alarm": true, 
  "at": true, 
  "before": false, 
  "email": false
}

我建议把可选的位置参数移到最后。

代码语言:javascript
复制
Usage:
  prog [options] (alarm|email) at <v1> [<v1>]

Options:
  -b, --before <v2>   Do something before
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49703888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档