UAST
UAST(统一抽象语法树)是针对 JVM(Java 虚拟机)的不同编程语言的 PSI 上的抽象层。
它提供了一个统一的 API,用于处理公共语言元素,如类和方法声明、文字值和控制流运算符。
不同的 JVM 语言有自己的 PSI,但许多 IDE 功能,如检查、装订线标记、引用注入和许多其他功能,对所有这些语言都以相同的方式工作。
使用 UAST 允许使用单一实现提供可在所有支持的 JVM 语言中工作的特性。
为 Kotlin 编写 IntelliJ 插件的演示文稿提供了在真实场景中使用 UAST 的全面概述。
我什么时候应该使用 UAST?
对于插件,这应该以相同的方式适用于所有 JVM 语言。
一些已知的例子是:
Spring Framework
Android Studio
Plugin DevKit
支持哪些语言?
Java:完全支持
Kotlin:全力支持
Scala:测试版,但完全支持
Groovy:仅声明,不支持方法体
修改 PSI 怎么样?
UAST 是只读 API。 有实验性的 UastCodeGenerationPlugin 和 JvmElementActionsFactory 类,但目前不建议外部使用。
参考资料
https://plugins.jetbrains.com/docs/intellij/uast.html#which-languages-are-supported