アプリケーションでユーザー スクリプト用の小さな記述言語を実装しようとしています。基本的に、ユーザーはオブジェクトが他のオブジェクトからどのように作成されるかを記述します。(実際にはプログラミング言語ではありません)。JSON も使用できます (ただし、より冗長になります)。
私は leex と yecc を使用しており、まともな解析ツリーを持っています。次のようなものだとします。
{def,double, %% function name double
[{x}], %% list of input names
%% return expression, in this case {Operator, Operand1, Operand2}
{'*',{var,x},{number,2}}
}.
このツリーを使用して、次のようなものを構築したいと思います。
double(State) ->
_Var1 = some_app:get_input(State,x),
_Var1 * 2.
しかし、どこから始めればよいかわかりません。実行時にツリーを読み取ってファンを構築することはできますが、コンパイル方法を学びたい (そしてパフォーマンスが向上することを願っています)。
解析ツリーを Erlang AST に変換してから、erlang モジュールをコンパイルする必要がありますか?
ありがとう。