是否可以像这样引用 Elixir 表达式(AST 树):
quote do: 1 + 1
=> {:+, [context: Elixir, import: Kernel], [1, 1]}
并将其转换为 Erlang AST?
我查看了代码模块以及一些内核模块,寻找执行此操作的函数,但我没有找到任何东西。我什至不确定这是否可能......我不知道像 Elixir 宏这样的东西将如何在 Erlang AST 中表示。
提前致谢!
是否可以像这样引用 Elixir 表达式(AST 树):
quote do: 1 + 1
=> {:+, [context: Elixir, import: Kernel], [1, 1]}
并将其转换为 Erlang AST?
我查看了代码模块以及一些内核模块,寻找执行此操作的函数,但我没有找到任何东西。我什至不确定这是否可能......我不知道像 Elixir 宏这样的东西将如何在 Erlang AST 中表示。
提前致谢!
目前没有公开的 API 可以做到这一点。您可以查看elixir 模块以了解它是如何完成的,但它是私有 API,可以随时更改,不保证兼容性,甚至删除。
例如,我写了'gist'它是如何完成的 - https://gist.github.com/habibutsu/bc6791d3d81b6ea54e1a
使用了两个函数:
fun elixir:'string_to_quoted!'/4
fun elixir:quoted_to_erl/3