コンパイラが実際にどのように機能するかを調べることに興味を持ちました。私はいくつかの本を調べましたが、コンパイラーのフェーズは大まかに次のようなものであるという事実にすべて同意しています(間違っている場合は修正してください): 字句解析、構文解析、意味解析、中間コード、コード最適化、コード生成。レキシカルとシンタックスのフェーズは、メソッドとして非常に明確で単純に見えます (しかし、これはもちろん簡単という意味ではありません)。ただし、セマンティック フェーズが実際に構成されているものをまだ見つけることができません。1 つには、スコープ チェック、宣言チェック、型チェックなどのいくつかのサブフェーズが必要であることはわかっていますが、私を悩ませている質問は、他にやらなければならないことがありますか?ということです。このフェーズで実行する必要がある必須の手順を教えてください。これはプログラミング言語とコンパイラの実装に大きく依存することは承知していますが、C/C++、Java に関する例をいくつか教えてください。そして、それらのことを詳しく読むことができる本/ページ/記事を教えてください. ありがとう。
編集: 私が調べた本は、「コンパイラ: 原則、技法、およびツール」、Aho および「最新のコンパイラ設計」、Grune、Reeuwijk でした。それらを使用してこの質問に答えることができませんでした。この質問が広すぎると思われる場合は、C、C++、または Java のいずれかで選択したコンパイラの実装を考慮して回答してください。