将Elixir AST转换为Erlang AST?可能吗?

时间:2013-11-14 16:25:36

标签: erlang abstract-syntax-tree quote elixir beam

是否可以像这样采用引用的Elixir表达式(AST树):

quote do: 1 + 1
=> {:+, [context: Elixir, import: Kernel], [1, 1]}

并将其转换为Erlang AST?

我查看了代码模块以及一些寻找功能的内核模块,但是我找不到任何东西。我甚至不确定这是否可能......我不知道Elix如何在Erlang AST中表示Elixir宏。

提前致谢!

2 个答案:

答案 0 :(得分:5)

目前没有公开的API可以这样做。您可以查看the elixir module以了解它是如何完成的,但它是私有API,可以随时更改,无法保证兼容性,甚至可以删除。

答案 1 :(得分:-1)

例如,我写了'gist'如何做到 - https://gist.github.com/habibutsu/bc6791d3d81b6ea54e1a

有两个功能:

fun elixir:'string_to_quoted!'/4
fun elixir:quoted_to_erl/3