修了試験 2012-12-16実施分 基本情報技術者試験 問25
コンパイラで構文解析した結果の表現方法の一つに四つ組形式がある。 (演算子,被演算子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 演算子 被演算子2」を表します。 【四つ組の展開】 (*,B,C,T_1)は、T_1=B*Cを表します。 (/,T_1,D,T_2)は、T_2=T_1/D=B*C/Dを表します。 (+,A,T_2,T_3)は、T_3=A+T_2=A+B*C/Dを表します。 【選択肢別解説】 1:○ A+B*C/Dは、乗除を先に計算するとA+((B*C)/D)です。 展開した結果と一致します。 2:× T_2は解析の途中で使う一時変数であり、元の式には現れません。 T_2をB*C/Dに戻した式が元の式です。 3:× B*C+A/Dを解析すると、2つ目の四つ組は(/,A,D,T_2)になります。 最後もT_1とT_2を足す形になり、T_1をDで割る四つ組やAを足す四つ組とは合いません。 4:× T_1は解析の途中で使う一時変数であり、元の式には現れません。 またこの式にはAが含まれないので、最後の(+,A,T_2,T_3)と合いません。 【ポイント】 四つ組は中間コードの一種で、一時変数を元の式に代入し直すと復元できます。 演算子の優先順位(乗除が加減より先)に従って並んでいることを確かめます。まとめて解く
修了試験 2012-12-16実施分を通しで解く(80問)→