【问题标题】:Convert Core Erlang forms into Erlang source code string将 Core Erlang 表单转换为 Erlang 源代码字符串
【发布时间】:2019-01-16 20:37:08
【问题描述】:

我有带有cerl 模块的Core Erlang 表单结构。我希望将其“反编译”成 Erlang 源代码字符串。

虽然我可以这样做:

Forms = erl_syntax:form_list(CoreForms),
erl_prettypr:format(Forms).

但是erl_syntax:form_list/1 返回一个空列表。

【问题讨论】:

  • 什么是CoreForms
  • 什么是c_erl模块?您使用的是哪个功能?有哪些参数?
  • 模块名为 cerl,而不是 c_erl。它是编译器应用程序的一部分。
  • @pdexter CoreForms 是一个 cerl:cerl(),一个作为 Core Erlang AST 的模块。

标签: erlang erlang-otp decompiler coreerlang


【解决方案1】:

核心 Erlang AST 无法使用 syntax_tools 中的实用程序处理 - 这些仅适用于普通 Erlang AST。对于 Core Erlang,有两个用于漂亮打印的模块(未记录):编译器应用程序中的 core_pp,类似于 stdlib 中的 erl_pp,以及 hipe 应用程序(在 lib/hipe/cerl/ 下)中的 cerl_prettypr,类似于erl_prettypr 在 syntax_tools 中。

【讨论】:

  • core_pp:format/1 将核心 Erlang 转换为核心 Erlang 源字符串,但我对构建常规 Erlang 源字符串感兴趣。
  • @lpil 啊,所以你想从核心打印 Erlang?这是不可能的。您不能“简单地”从核心重构 Erlang 源代码。
  • 正如我所担心的那样。感谢您的确认:)
猜你喜欢
  • 2012-04-30
  • 2012-03-14
  • 2015-04-20
  • 1970-01-01
  • 2018-08-23
  • 2015-04-19
  • 2015-09-09
  • 2011-04-19
  • 1970-01-01
相关资源
最近更新 更多