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