Skip to content

Latest commit

 

History

History
50 lines (32 loc) · 1.66 KB

apdB.md

File metadata and controls

50 lines (32 loc) · 1.66 KB

ApdB.ErlangのAST

Elixirの実体はerlコマンドを各種引数付きで実行させる シェルスクリプトという事は(xxx)で説明しました。

ここではerl上で、Erlangソースファイルがどう実行されるのかを解説していきます。 erl上でErlangのソースコードは、以下の流れで実行されます。

Step0.サンプル(解析対象)コード

% 変数代入
Var = var.

% 関数定義
MyFunc = fun(X,Y) -> X + Y end.

% 関数実行
MyFunc(1,2).

% TODO:その他サンプルを記述、一通りのパターンを網羅する事

TODO: 説明を追加する

Step1.ソースファイルをスキャン(erl_scan)して文字列に変換

Step2.ソースの文字列をトークンに変換

Step3.トークンをパースしてASTに変換

Step4.ASTをerl_evalで評価する

Step5.Elixirの場合は?

Elixirのコンパイルでは、以下の様にソースファイルが実行されます。

  1. ElixirのソースファイルをElixirのASTに変換
  2. ElixirのASTをErlangのASTに変換
  3. ErlangのASTをerl_evalして実行/beamファイルを作成

上記の様にElixirのコンパイラで作成されるbeamファイルは、 Erlangのコンパイラが作成するbeamファイルと同等のものです。 (何故ならASTレベルでElixirからErlangに変換されるから)

つまり、ElixirとErlangでは、実行のオーバーヘッドが無いという事です。