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代码并格式化相关的类

最新文章

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

热门文章

  1. 跳板攻击之:frp代理转发
  2. Vue框架整理:computed计算属性设置与缓存
  3. [引擎开发] 深入GPU和渲染优化(基础篇)
  4. 关于Intent Uri页面跳转
  5. 多个mysql版本并行运行
  6. 学习笔记3:Android Studio 配置NDK编译c++代码
  7. gitlab 搭建代理踩坑
  8. Spring全家桶(一)之Spring总结
  9. 九、Lambda、正则表达式
  10. 查找php-fpm