是否存在左关联前缀运算符或右关联后缀运算符?

Rei*_*aka 6 language-agnostic parsing

这个页面说"前缀运算符通常是右关联的,后​​缀运算符是左关联的"(强调我的).

是否存在左关联前缀运算符或右关联后缀运算符的实例?如果没有,假设的那个会是什么样子,怎么解析?

Ser*_*eyS 1

我不记得任何左关联的前缀运算符或右关联的后缀运算符。但我可以想象两者很容易同时存在。它们并不常见,因为人们寻找操作员的自然方式是:更接近身体的操作员先申请

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

请让我知道,如果你有任何问题。