原文链接:
http://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/psi_elements.html
PSI(程序结构接口)文件表示PSI元素的层次结构(所谓的PSI树)。 单个PSI文件可以包括特定编程语言中的若干PSI树。 PSI元素又可以具有子PSI元素。
PSI元素和单个PSI元素级别上的操作用于探索源代码的内部结构,这由IntelliJ平台解释。例如你可以使用PSI元素进行代码分析,如代码检查或意图操作。
PsiElement类是PSI元素的基类。
我怎样得到一个PSI元素?
- 操作:
e.getData(LangDataKeys.PSI_ELEMENT)
;
注意:如果当前编辑器打开并且光标所在元素是引用,这将返回解析引用的结果。 这可能不是你所需要的。
- 文件偏移:
PsiFile.findElementAt()
;
注意:这返回指定偏移量最低级别的元素,通常是一个词法记号。大多数情况,你需要使用
PsiTreeUtil.getParentOfType()
找出你真正需要的元素。
- 迭代PSI文件:使用
PsiRecursiveElementWalkingVisitor
; - 解析引用:
PsiReference.resolve()
。
我能用它来做什么?
查看PSI指导手册