【问题标题】:What is the meaning of `~` in python grammarpython语法中的`~`是什么意思
【发布时间】:2021-09-08 06:05:13
【问题描述】:

我正在浏览python grammer specification并找到以下语句,

for_stmt: | 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] 块 [else_block]

~ 在这条语法规则中是什么意思?语法中使用的其他符号(如 &!|)已经记录在案,但 ~ 没有。

符号是EBNFPEG 的混合。特别是,& 紧随其后 由符号、标记或带括号的组表示积极 前瞻(即需要匹配但不消耗),而! 表示负前瞻(即,需要 not 匹配)。我们 使用| 分隔符来表示 PEG 的“有序选择”(写为/ in 传统的 PEG 语法)

.

【问题讨论】:

  • @buran 这是一个关于 EBNF/PEG 的问题,而不是 Python 语法。
  • @theberzi,我的错

标签: python parsing cpython ebnf peg


【解决方案1】:

在语法表达式下的PEP 617 中有记录:

~

提交当前的替代方案,即使它无法解析。

rule_name: '(' ~ some_rule ')' | some_alt

在此示例中,如果解析了左括号,则不会考虑其他替代方案,即使 some_rule 或')' 无法解析。

~ 基本上表明,一旦你到达它,你就会被锁定在特定的规则中,如果解析失败,你就无法进入下一个规则。 PEP 617 前面提到| some_alt 可以写在下一行。

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2020-11-02
    • 2020-06-01
    • 2018-05-12
    • 2017-04-13
    相关资源
    最近更新 更多