メインコンテンツへ
ソフトウェア

コンパイラの処理フェーズを正しい順序で並べたものはどれか。

ア.字句解析 → 構文解析 → 意味解析 → 最適化 → コード生成正解
イ.構文解析 → 字句解析 → 最適化 → 意味解析 → コード生成
ウ.字句解析 → 意味解析 → 構文解析 → コード生成 → 最適化
エ.意味解析 → 字句解析 → 構文解析 → 最適化 → コード生成

解説

コンパイラは「本の翻訳者」みたいなもの。文字を認識(字句)→文法確認(構文)→意味確認(意味)→翻訳最適化(最適化)→出力(コード生成)の順で仕事をする!

なぜ ア が正解か

標準的なコンパイラフェーズ: ①字句解析(Lexer): ソースコードをトークン列に分解。②構文解析(Parser): トークンから構文木(AST)を構築。③意味解析(Semantic Analysis): 型チェック・スコープ解決・型変換。④最適化(Optimization): 中間コードを効率化。⑤コード生成(Code Generation): ターゲットコード(機械語など)を出力。

なぜ イ は間違いか

構文解析は字句解析の後に行う。字句解析で得たトークン列を元に構文解析するため順序が入れ替わっている。

なぜ ウ は間違いか

意味解析は構文解析で得た構文木を対象に行う。構文解析前に意味解析はできない。

なぜ エ は間違いか

意味解析を最初に行うことはできない。意味解析は構文木を必要とするため、字句解析→構文解析の後に来る。

出典: AI生成問題(学習用)