我希望我的扩展能够读取 .java 文件的 Java AST,以进一步保存选定代码段的节点名称(例如,“ClassDeclaration”)。例如,如果您选择“public”,则 AST 告诉您它是“修饰符”,然后我想将节点名称“修饰符”保存为变量中的字符串。
首先,我需要 Java AST。
我首先查看了 VSCode 市场,但没有可用于 Java 的 AST 扩展(但你可以找到一些适用于其他语言,如 TypeScript)。我得到的结果是 Java 扩展包,其中包含许多有用的 Java 扩展,但没有一个是明确关于 AST 的。由于 Red Hat 有一个调试器和语言支持,我很确定他们使用 AST 来使他们的扩展工作,所以我查看了他们的源代码,试图找到这个但没有成功。我唯一知道的是它们引用了 Eclipse JDT“包”,但我不明白如何。答案可能就在那里,但代码对我来说很复杂。
我尝试的另一种方法是从 TypeScript AST(git 链接:https ://github.com/krizzdewizz/vscode-typescript-ast-explorer )获取源代码并尝试编写我自己的 Java AST 扩展(当然是在 TypeScript 中) ,但我很快意识到他使用的是 TypeScript 特定的 node_modules。我去寻找一个 Java 并想出了这个 npm 包:https ://www.npmjs.com/package/java-ast 。我不确定这是否有用,但我也不知道如何使用它(是的,有一个例子,我试过了,但你可以说我对此很陌生)。
如果有人可以进一步帮助我,我将不胜感激。