将勺子模型转换成其他东西

Convert Spoon model into something else

我正在尝试将 Java 代码的 Spoon representation 转换成其他代码;假设 JSONXML 表示或其他 Java model.

我不确定如何以及从哪里开始。

最后一个问题:当转换一个元素(比如 CtIf)时,如何以独特的方式识别其父元素(CtBlock)?

假设它将输出以下内容:

[
  {
    type: block,
    id: ???,
    ...,
  },
  ...,
  {
    type: if,
    parent: ???, (the block above)
    ...,
  }
]

我有点迷茫,需要一些帮助:) 谢谢!

最简单的方法是实现自定义漂亮打印机(查看 https://github.com/INRIA/spoon/blob/master/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java)并通过覆盖它来将其传递给启动器。