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