右結合 【right-associative】 右結合性
概要
右結合(right-associative)とは、中置記法の式の中に優先順位が同じ演算子が複数ある時、左側から計算するもの。何らかの演算子☆があるとき、式「x☆y☆z」は「x☆(y☆z)」に等しくなる。数学でもプログラミングでも、「a+b」のように演算子を被演算子の間に書く中置記法では、様々な演算子を組み合わせた式を評価する際に「掛け算は足し算より先に計算する」といった優先順位が決まっている。順位を逆にして先に計算したい箇所は ( ) で括る必要がある。
式中に2つ以上の演算子が連続していて優先順位が同じである場合に、右側から左に向かって順に結合していくルールを右結合という。代入演算子を採用しているプログラミング言語ではこれが右結合となっていることが多く、「a=b=c=d」を「a=(b=(c=d)」のように評価し、aとbとcにdの値が代入される。
一方、左側から右に向かって結合していくルールは「左結合」(left-associative)と呼ばれる。多くの言語では加減乗除など大半の演算子が左結合であり、「a-b-c-d」は「((a-b)-c)-d」と等しくなる。比較演算子の「<」や「>」のようにどちらでもないものは「非結合」(non-associative)という。
冪乗()の演算子が定められている言語では、これを左結合とするものと右結合とするものに分かれる。例えば、Visual Basicの冪乗演算子「^」は左結合なので「a^b^c」が「(a^b)^c」と解釈されるが、RubyやJavaScriptの冪乗演算子「**」は右結合であるため「a**b**c」は「a**(b**c)」と解釈される。
(2024.6.28更新)