将 ANTLR 解析树转换为字符串然后还原它

Converting ANTLR parse trees into string and then reverting it

我是 ANTLR 的新手,我正在为一个项目深入研究它。我的工作需要我从源代码文件生成一个解析树,将解析树转换成一个字符串,该字符串以某种 "human-readable" 的形式保存有关解析树的所有信息。然后将修改此字符串的部分内容(表示解析树),并且必须将修改后的字符串转换为更改后的源代码。

我发现 .toStringTree(tree) 方法可以在 ANTLR 中使用以 LISP 格式打印出树。有没有更好的方法将解析树表示为包含所有信息的字符串?

能否使用 ANTLR 将字符串解析树还原为原始源代码(使用相同的语言)?如果没有,是否有任何工具可以做到这一点?

Can the string-parse-tree be reverted back to the original source code (in the same language) using ANTLR?

该字符串不包含标记类型,只包含匹配的文本。换句话说:您不能从 ToStringTree 的输出创建解析树。此外,许多 ANTLR 语法具有跳过某些输入(例如空格和换行符)的词法分析器规则,因此并非总是可以将解析树转换回原始输入源。

If no, are there any tools for this?

毫无疑问,我建议您在 GitHub 上进行搜索。但是当您拥有解析树时,创建自定义树结构并将其转换为 JSON.

是微不足道的