我想要构建一个Intellij插件,它用特定的注释标识scala类。
例:
@RunWith(classOf[SimpleTestRunner])当我使用最后一个代码段的PSITree插件构建PSIViewer时,我得到了这个树
ScalaFile:Dummy.scala(0,36)
PsiErrorElement:Wrong top statement declaration(0,0)
<empty list>
PsiElement(@)('@')(0,1)
MethodCall(1,35)
ReferenceExpression: RunWith(1,8)
PsiElement(identifier)('RunWith')(1,8)
ArgumentList(8,35)
PsiElement(()('(')(8,9)
GenericCall(9,34)
ReferenceExpression: classOf(9,16)
PsiElement(identifier)('classOf')(9,16)
TypeArgumentsList(16,34)
PsiElement([)('[')(16,17)
SimpleType: SimpleTestRunner(17,33)
CodeReferenceElement: SimpleTestRunner(17,33)
PsiElement(identifier)('SimpleTestRunner')(17,33)
PsiElement(])(']')(33,34)
PsiElement())(')')(34,35)现在,我尝试使用导航元素"ReferenceExpression,ArgumentList,GenericCall“访问子节点,我知道如何递归访问树,但不知道该查找什么。
那么,有人能告诉我表示这些元素的接口是什么吗?或者有某种实用类可以帮助我这样做吗?
发布于 2017-06-28 19:22:23
我想你有Scala插件的源代码吧?
接口(实际上是Scala特性)是在org.jetbrains.plugins.scale.lang.psi.api包中定义的。例如,您可以在那里找到./expr/ScGenericCall.scala。树中的每个元素都有一个相应的Sc.scala文件来定义它。
https://stackoverflow.com/questions/44805485
复制相似问题