コンパイラ
抽象構文木(AST)の特徴として正しいものはどれか。
- Aソースコードの括弧や区切り記号まで、すべてを節として残している
- B意味に関係しない記号を省き、演算子の優先順位を木の形で表している
- CCPUの命令と1対1に対応しており、そのまま実行できる
答えと解説を見る
正解:B. 意味に関係しない記号を省き、演算子の優先順位を木の形で表している
構文解析では、文法の規則どおりに括弧や区切り記号まで含めた木(具象構文木)ができますが、その後の処理には不要な情報が多く含まれます。抽象構文木は、プログラムの意味に必要な演算や文だけを節にした木で、例えば (a + b) * c では、掛け算の節の下に足し算の節がくることで、括弧がなくても計算の順番が分かります。CPUの命令に対応しているのは、さらに後の段階で生成するコードです。
- A. 括弧まで残すのは具象構文木の方です。
- B. 正しい。不要な記号を省き、優先順位を木の形で表します。
- C. CPUの命令に対応するのは後の段階のコードです。