Python PEG 中 bitwise_or 的用途是什么?
What is the purpose of bitwise_or in Python PEG?
PEG语法中的bitwise_or
是什么意思?更准确地说,在它甚至没有解析 | 的上下文中有很多 bitwise_or
但也有发生。 bitwise_or
在 PEG 中除了作为 | 之外还有其他用途吗?在 Python?
从 Python PEG 中提取的示例:-
comparison[expr_ty]:
| a=bitwise_or b=compare_op_bitwise_or_pair+ {
_PyAST_Compare(
a,
CHECK(asdl_int_seq*, _PyPegen_get_cmpops(p, b)),
CHECK(asdl_expr_seq*, _PyPegen_get_exprs(p, b)),
EXTRA) }
| bitwise_or
注意这里的bitwise_or
这个词。问题是那个不是 PEG 中的竖线。
“按位或运算符”又名 |
具有 lowest precedence of regular binary operators. The only binary operators with lower precedence are comparison operators, which are subject to chaining – 例如,a < b < c
大致等同于 a < b and b < c
– 因此表现特殊。
对于 PEG 解析器,优先级通常使用 precedence climbing 进行编码。这意味着 lower 优先子句匹配自身或 next 优先子句。因此,运算符优先级“|
< ^
< &
< ...”在按位或、按位异或、按位与等阶梯中编码:
bitwise_or:
| bitwise_or '|' bitwise_xor
| bitwise_xor
bitwise_xor:
| bitwise_xor '^' bitwise_and
| bitwise_and
bitwise_and:
| bitwise_and '&' shift_expr
| shift_expr
这使得 bitwise_or
成为匹配所有二元运算符的“入口点”:它可能遵循 bitwise_xor
,可能遵循 bitwise_and
,依此类推优先运算符。值得注意的是,这意味着 语法规则 bitwise_or
可以匹配不包含 操作 “按位或”的输入 – 例如,bitwise_or
匹配 a ^ b
.
因此,bitwise_or
用于二元运算符可能出现的任何位置。
PEG语法中的bitwise_or
是什么意思?更准确地说,在它甚至没有解析 | 的上下文中有很多 bitwise_or
但也有发生。 bitwise_or
在 PEG 中除了作为 | 之外还有其他用途吗?在 Python?
从 Python PEG 中提取的示例:-
comparison[expr_ty]:
| a=bitwise_or b=compare_op_bitwise_or_pair+ {
_PyAST_Compare(
a,
CHECK(asdl_int_seq*, _PyPegen_get_cmpops(p, b)),
CHECK(asdl_expr_seq*, _PyPegen_get_exprs(p, b)),
EXTRA) }
| bitwise_or
注意这里的bitwise_or
这个词。问题是那个不是 PEG 中的竖线。
“按位或运算符”又名 |
具有 lowest precedence of regular binary operators. The only binary operators with lower precedence are comparison operators, which are subject to chaining – 例如,a < b < c
大致等同于 a < b and b < c
– 因此表现特殊。
对于 PEG 解析器,优先级通常使用 precedence climbing 进行编码。这意味着 lower 优先子句匹配自身或 next 优先子句。因此,运算符优先级“|
< ^
< &
< ...”在按位或、按位异或、按位与等阶梯中编码:
bitwise_or:
| bitwise_or '|' bitwise_xor
| bitwise_xor
bitwise_xor:
| bitwise_xor '^' bitwise_and
| bitwise_and
bitwise_and:
| bitwise_and '&' shift_expr
| shift_expr
这使得 bitwise_or
成为匹配所有二元运算符的“入口点”:它可能遵循 bitwise_xor
,可能遵循 bitwise_and
,依此类推优先运算符。值得注意的是,这意味着 语法规则 bitwise_or
可以匹配不包含 操作 “按位或”的输入 – 例如,bitwise_or
匹配 a ^ b
.
因此,bitwise_or
用于二元运算符可能出现的任何位置。