平成25年度秋期 応用情報技術者試験 午前 問20
コンパイラにおける処理を字句解析、構文解析、意味解析、最適化の四つのフェーズに分けたとき、意味解析のフェーズで行う処理はどれか。
- ア 言語の文法に基づいてプログラムを解析し、文法誤りがないかチェックする。
- イ プログラムを表現する文字の列を、意味のある最小の構成要素の列に変換する。
- ウ 変数の宣言と使用とを対応付けたり、演算におけるデータ型の整合性をチェックする。
- エ レジスタの有効利用を目的としたレジスタ割付けや、不要な演算を省略するためのプログラム変換を行う。
解答・解説を見る
正解:ウ
AI解説
正解はウ。コンパイラの意味解析は、構文的には正しいプログラムに対して、変数の宣言と使用の対応付け、演算におけるデータ型の整合性チェック(型検査)など、言語の意味規則に関する検査を行うフェーズである。字句解析→構文解析→意味解析→最適化(→コード生成)という処理順序と各フェーズの役割を対応付けて覚える。 ア: 文法に基づいて解析し文法誤りを検出するのは構文解析の説明である。 イ: 文字の列を意味のある最小単位(トークン)の列に変換するのは字句解析の説明である。 ウ: 正しい。宣言と使用の対応付けや型の整合性チェックは意味解析で行う。 エ: レジスタ割付けや不要演算の省略は最適化の説明である。 💡 字句=トークン化、構文=文法チェック、意味=型チェック、最適化=効率化と1語ずつ対応させる。「データ型」という語が出たら意味解析と判断してよい。
出典:平成25年度 秋期 応用情報技術者試験 午前 問20 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。