Rei*_*aka 6 language-agnostic parsing
这个页面说"前缀运算符通常是右关联的,后缀运算符是左关联的"(强调我的).
是否存在左关联前缀运算符或右关联后缀运算符的实例?如果没有,假设的那个会是什么样子,怎么解析?
我不记得任何左关联的前缀运算符或右关联的后缀运算符。但我可以想象两者很容易同时存在。它们并不常见,因为人们寻找操作员的自然方式是:更接近身体的操作员先申请。
C#/C++ 语言的简单示例:
~-3是相等的2,但是
-~3是相等的4
这是因为这些前缀运算符是右结合的,因为~-3这意味着首先应用 - 运算符,然后将 ~ 运算符应用于前一个的结果。这将导致整个表达式的值将等于2
假设您可以想象,如果这些运算符是左关联的,则首先应用~-3最左边的运算符,然后再应用前一个运算符的结果。这将导致整个表达式的值将等于~-4
[编辑]回答史蒂夫·杰索普:
史蒂夫说:the meaning of "left-associativity" is that +-1 is equivalent to (+-)1
我不同意这种说法,认为这是完全错误的。为了更好地理解左关联性,请考虑以下示例:
假设我有一个带有左关联前缀运算符的假设编程语言:
@- 操作数乘以3
#- 添加7到操作数
在我的语言中,以下构造@#5将等于(5*3)+7 == 22
如果我的语言是右关联的(如大多数常用语言),那么我将拥有(5+7)*3 == 36
请让我知道,如果你有任何问题。