我正在尝试为应用程序中的用户脚本实现一种小型描述语言。基本上,用户描述了如何从其他对象创建对象。(不是真正的编程语言)。我也可以使用 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 模块吗?
谢谢。