Kotlin源码分析 - 元编程(使用自身语言编写生成自身代码)
2024-09-18 20:54:00
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代码并格式化相关的类
最新文章
- Atittit.研发公司的组织架构与部门架构总结
- (十五)WebGIS中平移功能的设计和实现
- js写的闹钟,支持多个闹钟
- STSdb,最强纯C#开源NoSQL和虚拟文件系统 4.0 RC2 支持C/S架构
- PAT 1020. 月饼 (25)
- 10,SFDC 管理员篇 - 流程自动化
- 转载 uboot 命令
- java 多线程6(线程的·通讯)
- 黄聪:Mysql5.6缓存命中率
- 李洪强iOS开发支付集成之微信支付
- 解决JavaScript中如何输出空格
- Prisma
- iOS工程师常用的命令行命令总结
- 4.2Python数据类型(2)之布尔类型
- Liunx ls命令
- libev4.15学习
- jmeter测试计划配置
- Coursera课程《大家的python》(Python for everyone)课件
- MyEclipse去除网上复制下来的代码带有的行号(使用正则表达式)
- Java中forEach, 用来遍历数组