修了試験 2017-01-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,被演算子2,結果)を上から順に読み、一時変数を元の式に置き換えていきます。 【計算】 1行目から、T_1=B*Cです。 2行目から、T_2=T_1/D=(B*C)/Dです。 3行目から、T_3=A+T_2=A+(B*C)/Dです。 乗除算は加減算より優先され、乗算と除算は左から計算します。 そのため、A+(B*C)/Dは括弧を外してA+B*C/Dと書けます。 【選択肢別解説】 1:○ 通常の優先順位で計算すると、B*C、その結果÷D、Aとの和の順になり、四つ組と一致します。 2:× T_2は解析の途中で作られる一時変数で、元の式には現れません。 元の式ではT_2の位置にDが入ります。 3:× B*C+A/Dでは、A/Dを先に計算してからB*Cと足すことになります。 四つ組ではDで割るのはB*Cの結果です。 4:× T_1も一時変数で、元の式には現れません。 さらにこの式ではT_1/Dを計算してからB*Cに足す形になっています。 【ポイント】 四つ組は、コンパイラが式を一つ一つの演算に分解した中間表現です。 一時変数を上の行から順に元の式へ置き換えていくと、確実に解けます。まとめて解く
修了試験 2017-01-22実施分を通しで解く(80問)→