Spoon(第五讲:一点理论)_追逐梦想的顾咏丰_新浪博客

Spoon(第五讲:一点理论)

经历之前的四讲,我们也逐渐从刚开始的 linux 控制台,一步步实现到了在 eclipse 中运行 spoon 工具来分析代码了,实际上 spoon 的构造远远比我们想象的要复杂的多,根据 spoon 的论文来看:
Spoon: A Library for Implementing Analyses and Transformations of Java Source Code 

Spoon 最底层是由meta-model 也就是元模型实现的,具体的分析,转化过程如下图所示,

Spoon(第五讲:一点理论)

如图所示,非常直观,当Spoon拿到一个java程序的时候,会先用现有的编译工具编译( Parsing )一遍源代码,生成最开始的抽象语法树( Low-Level Abstract Syntactic Tree ),然后Spoon 会将这个初级AST的简化,生成更加易于操作的模型,即Spoon Java Model,这个时候,我们写的处理器( Processor ),程序转化器(Template)就起作用了。它会将这个 Spoon Java Model 转化成我们需要的形式,无论是分析( Analysis )还是转化( Transformation )。

Spoon Meta-Model 是整个Spoon工具的核心,为什么呢?因为不管是这个Model 还是 AST,都是这个Meta-Model( 也就是元模型 )的实例。那么在Spoon的设计中,开发者将这个Meta-Model划分为3个种类,依次是:
  • Structural part
  • Code part
  • Reference part

(一) Structural part  结构部分

顾名思义,这一部分包含了程序元素的声明,这些元素包括接口( Interface ),类( Class ),变量( Variable ),方法( Method ) 等。下图展示了Structural part 中的 Meta-Model 的部分分布及结构。
值得注意的是,每个类名的前缀都有CT,表示的是 Compiling Time 运行时。其中的继承关系非常好看到。
Spoon(第五讲:一点理论)


(二) Code part 代码部分

这一部分包含了程序的可执行代码部分( Executable Java Code ),比如说一个方法体里面的某个发现的代码。下图也展示了Code part 中 Meta-Model 的部分分布及结构
Spoon(第五讲:一点理论)


(三) Reference part 引用部分

这一部分模拟对程序元素的引用。这一部分,我们先不讲,在以后还会详细的介绍。我们现在的主要任务在于前面2个 part 的理解上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值