【问题标题】:How to pretty print a GumTreeDiff ITree?如何漂亮地打印 GumTreeDiff ITree?
【发布时间】:2016-03-07 16:31:51
【问题描述】:

我正在使用GumTree 将Java 文件解析为ITree,它是代表AST 的GumTree 数据结构。然后我通过对其执行操作来修改 ITree,这些操作是 GumTree 对插入、更新(重命名等)、删除和移动的表示。然后我想对生成的修改后的 ITree 进行解析。换句话说,我正在尝试漂亮地打印 AST。

我查看了 ITree 方法 (core/src/gumtreediff/tree) 并尝试了 toPrettyString,但它只返回了字符串“15”,它是树的顶部 AST 节点的type(一个编译单元)。

GitHub 上的 GumTree wiki 没有提到反解析或漂亮的打印。谷歌搜索没有帮助,因为我认为 GumTree 太晦涩难懂了。

想知道我是否应该“只”编写自己的解析器。

我正在使用 GumTree 2.0.0 版。

【问题讨论】:

  • 目前正在实现一个反解析器。我希望尽快将此功能添加到 GumTree。
  • 你曾经能够让它工作吗? GumTree 现在是否支持反解析,或者是否有一些替代的具体语法树可以保留源代码格式?

标签: java parsing open-source abstract-syntax-tree pretty-print


【解决方案1】:

不确定这是否是您要查找的内容,但有一个内置方法

toTreeString()

这将返回树的多级缩进版本。

【讨论】:

  • 谢谢,但这不是我想要的。我查看了所有提供的 API,但我想要的并不存在。我一直在与主要的 Gumtree 开发人员联系,我正在努力实现我需要的 unparser 功能。
  • 哦,我明白了。您正试图将 ITree 变回看起来像人类可读代码的东西。你不能通过简单的后序遍历来完成这个吗?我想事情并没有那么简单。好吧,祝你好运!
  • 谢谢;我正在做一个遍历,但它不是那么简单。我必须重新添加所有终端字符,并且发现解析歧义。但到目前为止,我的解决方案适用于许多情况。
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 2010-09-13
  • 2012-10-08
  • 2011-02-04
  • 2011-07-28
  • 2015-02-07
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多