我正在尝试将 Java 代码的 Spoon 表示
转换为其他内容;假设是 JSON
或 XML
表示形式或其他 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/