6

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

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

并将其转换为 Erlang AST?

我查看了代码模块以及一些内核模块,寻找执行此操作的函数,但我没有找到任何东西。我什至不确定这是否可能......我不知道像 Elixir 宏这样的东西将如何在 Erlang AST 中表示。

提前致谢!

4

2 回答 2

8

目前没有公开的 API 可以做到这一点。您可以查看elixir 模块以了解它是如何完成的,但它是私有 API,可以随时更改,不保证兼容性,甚至删除。

于 2013-11-14T18:59:31.547 回答
-1

例如,我写了'gist'它是如何完成的 - https://gist.github.com/habibutsu/bc6791d3d81b6ea54e1a

使用了两个函数:

fun elixir:'string_to_quoted!'/4
fun elixir:quoted_to_erl/3
于 2016-01-14T12:52:24.173 回答