将核心Erlang表单转换为Erlang源代码字符串
我有带有将核心Erlang表单转换为Erlang源代码字符串,erlang,otp,decompiler,coreerlang,Erlang,Otp,Decompiler,Coreerlang,我有带有cerl模块的核心Erlang表单构造。我希望将其“反编译”为Erlang源代码字符串 我想我可以这样做: Forms = erl_syntax:form_list(CoreForms), erl_prettypr:format(Forms). 但是erl\u syntax:form\u list/1返回一个空列表。核心Erlang AST无法使用syntax\u工具中的实用程序处理-这些工具仅用于普通Erlang AST。对于Core Erlang,有两个用于预打印的模块(未记录):
cerl
模块的核心Erlang表单构造。我希望将其“反编译”为Erlang源代码字符串
我想我可以这样做:
Forms = erl_syntax:form_list(CoreForms),
erl_prettypr:format(Forms).
但是
erl\u syntax:form\u list/1
返回一个空列表。核心Erlang AST无法使用syntax\u工具中的实用程序处理-这些工具仅用于普通Erlang AST。对于Core Erlang,有两个用于预打印的模块(未记录):编译器应用程序中的Core\u pp
,类似于stdlib中的erl\u pp
,以及hipe应用程序中的cerl\u prettypr
(在lib/hipe/cerl/下)在语法工具中类似于erl\u prettypr
。什么是CoreForms
?什么是c\u erl模块?您使用的是哪种功能?使用哪些参数?模块名为cerl,而不是c_erl。它是编译器应用程序的一部分。@pdexterCoreForms
是一个cerl:cerl()
,作为Core Erlang AST的模块。Core\u pp:format/1
将Core Erlang转换为Core Erlang源字符串,但我对构建常规Erlang源字符串感兴趣。@lpil啊,那么您想从Core打印Erlang吗?这是不可能的。正如我所担心的,您不能“简单地”从核心重构Erlang源代码。感谢您的确认:)