`assign` 操作中的操作优先级?

Operation priorities in `assign` operation?

通常,assign 语句简单明了。但是假设有一个复杂的,它有括号和连接以及一堆不同的运算符; assign 语句右侧的运算符的评估优先级的确切顺序是什么?

有许多不同的运算符类型:

换句话说,如果您要将 assign 语句转换为 always 块,组织操作的确切顺序是什么?

回答

感谢 @dave_59,根据 IEEE 的文档,降序排列的优先级是:

运算符 关联性
()[]::.
+, -, !, ~, &, ~&, |, ~|^~^^~++--(一元)
**
*/%
+-(二进制)
<<>><<<>>>
<<=>>=insidedist
==!====!====?!=?
&(二进制)
^~^^~(二进制)
|(二进制)
&&
||
?:(条件运算符)
–>, <–>
=, +=, -=, *=, /=, %=, &=, ^=, \|=, <<=, >>=, <<<=, >>>=, :=, :/, <= None
{},{{}} 串联

IEEE 1800-2017 SystemVerilog LRM 的第 11.3.2 节运算符优先级对此进行了详细定义。