コンパイル
プログラミング言語の一種で言語を機械語、またはより低水準なプログラミング言語に変換することを指す
同じ水準・抽象度のプログラミング言語(同じでも良い)に変換する場合特にトランスコンパイル(トランスパイル)と呼ばれることがある
コンパイルの流れは以下のようになる
字句解析 (ソースコード→トークン)
構文解析(トークン列→抽象構文木)
意味解析
中間コード作成(抽象構文木→中間コード)
必要に応じて
「中間コード→(中間コードの)抽象構文木」という工程を挟む事になる
翻訳や最適化をしやすくするため行われたりする
翻訳(抽象構文木→IR木)
命令選択(IR木→抽象マシンコード)
最適化
必要に応じて
最終成果物の出力
抽象マシンコードから実際のオブジェクトファイルやソースコードが出力される