将Spoon模型转换为其他内容

时间:2017-04-19 14:07:18

标签: java inria-spoon

我正在尝试将Spoon representation的Java代码转换为其他内容;请说出JSONXML代表或其他Java model

我不知道如何以及从何处开始。

  • 我是否必须为Spoon的每个写一个processor metamodel(这是很多处理器写的)?
  • 我是否必须编写一个处理器 分析每个并采用上/下方法(包含大量instanceof个检查)?
  • 我必须这样做吗? 写一个基于树形表示的Scanner

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

假设它将输出以下内容:

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

我有点失落,需要一些帮助:) 谢谢!

1 个答案:

答案 0 :(得分:1)

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