コンパイラ
式 2 + 3 * 4 の抽象構文木の形として正しいものはどれか。
- A根は + の節で、その右の子が 3 * 4 を表す * の節になる
- B根は * の節で、その左の子が 2 + 3 を表す + の節になる
- C2、3、4、+、* の5つの節が、すべて根の直接の子として並ぶ
答えと解説を見る
正解:A. 根は + の節で、その右の子が 3 * 4 を表す * の節になる
掛け算は足し算より優先順位が高いので、この式は 2 + (3 * 4) と解釈されます。抽象構文木では先に計算する演算ほど下に置かれるので、根は + で、その左の子が2、右の子が3と4を子にもつ * の節になります。木を下から評価すると、3 * 4 = 12 を先に計算し、2 + 12 = 14 が得られます。根が * になるのは (2 + 3) * 4 と書いた場合で、すべてを根の子に並べると計算の順番が表せません。
- A. 正しい。優先順位の高い * が下になり、根は + です。
- B. 根が * になるのは (2 + 3) * 4 の場合です。
- C. 平らに並べると計算の順番が表せません。