正答3
解説
正解は3です。
手続型言語のコンパイラが目的コードを生成するまでの処理の順序を問う問題です。
一般に、字句解析、構文解析、意味解析、最適化、コード生成の順に処理します。
【選択肢別解説】
1:× 意味解析は、型の整合性などを調べる工程です。
構文解析の後、最適化の前に行います。
2:× 構文解析は、字句の並びが文法に合うかを調べて構文木を作る工程です。
字句解析の次に行います。
3:○ 最適化は、実行速度やサイズを改善するようにプログラムを変換する工程です。
選択肢の中ではコード生成の直前に行う、最後の処理です。
4:× 字句解析は、ソースプログラムを字句(トークン)に分ける最初の工程です。
【ポイント】
「字句、構文、意味、最適化、生成」の順で覚えましょう。
なお、最適化はコード生成の後に目的コードに対して行う場合もあります。