Kotlin源码分析 - 元编程(使用自身语言编写生成自身代码)
Kotlin源码分析
- Kotlin模块FIR分析发现,在生成fir tree的时候,kotlin使用了元编程的技术,以前看到这个技术还是在JastAdd上,使用jastadd语法去写代码,生成Java代码,使用切面编程的思想,由Jastadd去把这个逻辑生成Java源码的过程,可以保证了源码的整洁和设计思想独立(这个技术在当代已经废弃了,这个技术核心解决的问题是Java语法的臃肿和语法升级的困难,于是很多编程语言的做法是语法层次升级,最终编译生成JVM字节码,而不是Java代码,例如Kotlin)。
- 在Kotlin的FIR模块中,tree模块的结构对象居然采用的是自定义了一套格式,通过在一个文件中快速定义类关系,在另一个文件中快速定义属性关系,最终组件了Builder->Printer->Generator这样的流程,去生成Tree结构的Kotlin语言定义的FrontendTree结构,并在主项目中应用这个结构,最终达到简洁的方式定义了tree结构和应对快速变更升级的需求。
- 这种设计的好处是把生成结构对象当做一个项目来做,能够快速生成特定对象的类,毕竟生成的语法类200个左右,维护起来异常麻烦,但是通过核心节点在两个类中,能够保证清晰的维护思路。
具体目录
kotlin/compiler/fir/tree/tree-generator 树结构生成项目
Main.kt 生成代码启动类
FirTreeBuilder 类关系定义类
BuilderConfigurator\NodeConfigurator 字段定义类
model Kotlin相关语法属性定义类
printer 打印kotlin代码并格式化相关的类
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号