平成25年度 秋期 午前 問20
ソフトウェア
意味解析のフェーズで行う処理
コンパイラにおける処理を字句解析,構文解析,意味解析,最適化の四つのフェーズに分けたとき,意味解析のフェーズで行う処理はどれか。
- ア言語の文法に基づいてプログラムを解析し,文法誤りがないかチェックする。
- イプログラムを表現する文字の列を,意味のある最小の構成要素の列に変換する。
- ウ変数の宣言と使用とを対応付けたり,演算におけるデータ型の整合性をチェックする。
- エレジスタの有効利用を目的としたレジスタ割付けや,不要な演算を省略するためのプログラム変換を行う。
答えと解説を見る
✓ これが正解ウ変数の宣言と使用とを対応付けたり,演算におけるデータ型の整合性をチェックする。
解説
宣言と使用の対応や型の整合性を見るのが意味解析です。
設問は、コンパイラの処理を四つの段階に分けたとき、意味解析の段階で行う処理を選ばせています。見る軸は一つで、その処理が何を入力として何を出しているかです。意味解析は、並びの正しさを確かめ終えた後に置かれる段階で、文法の形だけでは言い表せない辻褄を調べます。たとえば、使われている変数がきちんと宣言されているか、その宣言と使い方が対応しているか、演算の左右でデータ型がそろっているか、といった点です。並びとしては何の問題もない書き方でも、宣言されていない名前を使っていたり、型の合わない代入をしていたりすれば、ここで初めて誤りとして捕まります。したがって、変数の宣言と使用とを対応付けたり、演算におけるデータ型の整合性をチェックしたりする、という記述が当てはまります。四つの段階は処理の順に並んでおり、四つの記述がその四つに一つずつ対応しているので、消去法ではなく突き合わせで決められる作りです。
ほかの選択肢はなぜ違うのか
- ア言語の文法に基づいてプログラムを解析し,…:言語の文法に照らして並びを調べ、文法上の誤りがないかを確かめるのは構文解析の段階です。並び方そのものを見る処理で、宣言や型のように並びからは読み取れない事柄までは扱いません。
- イプログラムを表現する文字の列を,意味のあ…:文字の列を最小の構成要素の列に変換するのは字句解析の段階です。意味という語が入っているため取り違えやすいのですが、ここで作られるのは記号の切れ目であり、入力も出力も文字と記号の列です。
- エレジスタの有効利用を目的としたレジスタ割…:レジスタの割付けや不要な演算の省略は最適化の段階です。正しさの確認はすでに済んでおり、実行を速くしたり出来上がりを小さくしたりするための作り替えを行う点で、目的が異なります。
出典:平成25年度 秋期 応用情報技術者試験 午前 問20
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)