java - 将 Spoon 模型转换为其他模型

标签 java inria-spoon

我正在尝试将 Java 代码的 Spoon 表示 转换为其他内容;假设是 JSONXML 表示形式或其他 Java 模型

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

  • 我是否必须为 Spoon 的每个叶子编写一个处理器 元模型(这是很多处理器要写的)?
  • 我是否必须编写一个处理器 分析每个并采用自上而下的方法(其中将包含大量instanceof检查)?
  • 我必须这样做吗? 编写一个基于树表示的扫描器

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

假设它将输出以下内容:

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

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

最佳答案

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

关于java - 将 Spoon 模型转换为其他模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498103/

相关文章:

java - 使用 Spoon Gradle 插件创建自定义注释处理器

java - 从 int 到 class 的映射

java - 远程客户端收不到 UDP 数据包

java - 抽象对象列表的 Jaxb 解码

java - 共享四边形基的方形/矩形(具有约束不变量)之间的继承问题

java - 目录中的两个java文件是否被视为 "package?"

java - Java 中相对文件路径的绝对路径

java - 如何在 Java 中自动实现跟踪关注点

java - 如何使用 Spoon 从 java 类中删除注释?