修了試験 2018-07-22実施分 基本情報技術者試験 問20
コンパイラで構文解析した結果の表現方法の一つに四つ組形式がある。 (演算子,被演算子1,被演算子2,結果) この形式は,被演算子1と被演算子2に演算子を作用させたものが結果であることを表す。 次の一連の四つ組は,どの式を構文解析したものか。 ここで,T_1,T_2,T_3は一時変数を表す。 (*, B, C, T_1) (/, T_1, D, T_2) (+, A, T_2, T_3)
正答1
解説
正解は1です。 四つ組を上から順に実行し、一時変数を元の式に置き換えていきます。 【計算】 1つ目の (*, B, C, T_1) は T_1=B*C です。 2つ目の (/, T_1, D, T_2) は T_2=T_1/D=B*C/D です。 3つ目の (+, A, T_2, T_3) は T_3=A+T_2=A+B*C/D です。 【選択肢別解説】 1:○ A+B*C/D は、乗除を先に左から計算して B*C、その結果をDで割り、最後にAを加えます。 四つ組の順序と一致します。 2:× T_2は構文解析の過程で作られる一時変数です。 元の式に一時変数が含まれることはありません。 3:× B*C+A/D なら、B*C と A/D を別々に求めてから加算する四つ組になります。 問題の四つ組では T_1 をDで割っているので一致しません。 4:× T_1は構文解析で作られる一時変数であり、元の式には現れません。 【ポイント】 四つ組形式(中間コード)は、演算の優先順位どおりに1演算ずつ分解した表現です。 一時変数を後ろから代入し直すと、元の式を復元できます。まとめて解く
修了試験 2018-07-22実施分を通しで解く(80問)→