是否有可能採取引述藥劑表達式(AST樹)是這樣的:將Elixir AST轉換成Erlang AST?可能嗎?
quote do: 1 + 1
=> {:+, [context: Elixir, import: Kernel], [1, 1]}
並將其轉換爲一個Erlang AST?
我查看了代碼模塊以及一些查找功能的內核模塊,但是我沒有找到任何東西。我甚至不確定這是否可能......我不知道Erlang的宏如何在Erlang AST中表現出來。
在此先感謝!
是否有可能採取引述藥劑表達式(AST樹)是這樣的:將Elixir AST轉換成Erlang AST?可能嗎?
quote do: 1 + 1
=> {:+, [context: Elixir, import: Kernel], [1, 1]}
並將其轉換爲一個Erlang AST?
我查看了代碼模塊以及一些查找功能的內核模塊,但是我沒有找到任何東西。我甚至不確定這是否可能......我不知道Erlang的宏如何在Erlang AST中表現出來。
在此先感謝!
目前還沒有一個公共的API來這樣做。您可以查看the elixir module以瞭解它是如何完成的,但它是私有API,可以在任何時候進行更改,而不保證兼容性,甚至是刪除。
比如我寫的 '要點' 如何可以做到的 - https://gist.github.com/habibutsu/bc6791d3d81b6ea54e1a
有使用兩個功能:
fun elixir:'string_to_quoted!'/4
fun elixir:quoted_to_erl/3