Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按位_或在Python中的作用是什么?_Python_Python 3.x_Python 3.9_Peg_Python 3.10 - Fatal编程技术网

按位_或在Python中的作用是什么?

按位_或在Python中的作用是什么?,python,python-3.x,python-3.9,peg,python-3.10,Python,Python 3.x,Python 3.9,Peg,Python 3.10,在PEG语法中,按位\u或是什么意思?更准确地说,在上下文中有大量的按位的|或,它们甚至没有对|进行解析,但也有出现。在PEG中,bitwise_或除了作为Python中的|之外还有其他用途吗 从Python PEG中提取的示例:- comparison[expr_ty]: | a=bitwise_or b=compare_op_bitwise_or_pair+ { _PyAST_Compare( a, CHECK(asdl

在PEG语法中,
按位\u或
是什么意思?更准确地说,在上下文中有大量的
按位的|或
,它们甚至没有对|进行解析,但也有出现。在PEG中,
bitwise_或
除了作为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
注意此处的单词
按位\u或
。问题是PEG中的垂直条不是这样。

的“按位或运算符”aka
|
具有相同的属性。唯一优先级较低的二元运算符是–例如,
a
大致等同于
a
–因此具有特殊的行为

对于PEG解析器,优先级通常使用。这意味着较低优先级的子句与其自身或下一个优先级子句相匹配。因此,运算符优先级“
|
^
&<…”编码在按位或、按位异或、按位和等的阶梯中:

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\u或
成为匹配所有二进制运算符的“入口点”:它可能会延迟到
bitwise\u异或
,这可能会延迟到
bitwise\u和
,依此类推到最高优先级的运算符。值得注意的是,这意味着语法规则
bitwise\u或
可以匹配不包含操作“bitwise or”的输入,例如,
bitwise\u或
匹配
a^b


因此,
按位\u或
用于二进制运算符可能出现的任何位置。

谢谢。现在我明白了。