我正在查看Python语法规范,并发现以下语句:
for_stmt: | 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block]在这个语法规则中,
~
是什么意思?文档中已经记录了其他符号(如&
、!
和|
),但没有记录~
。
表示法是
EBNF
和PEG
的混合体。特别地,&
后面跟着一个符号、标记或括号组,表示肯定先行条件(即必须匹配但不消耗),而!
表示否定先行条件(即必须不匹配)。我们使用|
分隔符来表示PEG的“有序选择”(在传统的PEG语法中写成/
)。
.