python语法中的“~”是什么意思

Abd*_*P M 7 python parsing cpython ebnf peg

我正在经历python 语法规范并找到以下语句

\n
\nfor_stmt:\n | \'for\' star_targets \'in\' ~ star_expressions \':\' [TYPE_COMMENT] 块 [else_block]\n
\n

~这个语法规则是什么意思?语法中使用的其他符号(如&, !, |)已记录但尚未记录~

\n
\n

EBNF该符号是和的混合PEG。特别是,&后面跟有符号、标记或括号组表示正向先行(即需要匹配但不消耗),而!表示负向先行(即不需要匹配)。我们\n使用|分隔符来表示 PEG\xe2\x80\x99s \xe2\x80\x9cordered choice\xe2\x80\x9d (写为/传统 PEG 语法编写)

\n
\n

Bat*_*aBe 9

它记录在PEP 617中语法表达式中:

\n
\n

\n

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

\n

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

\n

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

\n
\n

基本上~表明,一旦到达它,您就会被锁定在特定规则中,如果解析失败,则无法移动到下一个规则。\nPEP 617 之前提到过| some_alt可以写在下一行中。

\n