如何解析科特林代码?

how to parse kotlin code?

我需要分析 kotlin 文件代码,以检测关键字 "data" 和“?”。

问题是我找不到任何像 JavaParser 这样的库。 我不需要强大的工具,只需要 return 我知道行数的东西。

有什么想法吗?

您需要找到一个 Kotlin 解析器,或者编写您自己的解析器。

对于这个解析子集,你可以作弊,因为 data 是一个关键字,所以如果你看到数据的每一侧都没有字母,你就知道它是关键字。

对于?,这取决于你想要什么意思,猫王可以通过点来检测,否则如果?旁边是一个字母,请尝试可空的意思。

见此[0] Kotlin代码解析相关讨论。他们谈论使用antlr v4语法来解析Kotlin代码。

[0] https://discuss.kotlinlang.org/t/kotlin-parser/1728

我用antlr4做的。我创建了一个开源库: https://github.com/sarahBuisson/kotlin-parser

<dependency
   <groupId>com.github.sarahbuisson</groupId>
   <artifactId>kotlin-parser</artifactId>
</dependency>

我还没有为它编写 Kotlin 语言语法。

不过我已经在Kotlin中实现了一个解析器,id是有什么用的。

它是 Kotlin 通用代码,因此适用于任何目标平台。

这里有文章,代码在github。

https://medium.com/@dr.david.h.akehurst/agl-your-dsl-in-the-web-c9f54595691b

您可以尝试 Kastree——将 Kotlin 源代码作为一组 AST 对象进行操作的简单库。

https://github.com/cretz/kastree

除了其他答案中提到的工具,这里还有一个可能对其他人有用的工具:

https://github.com/kotlinx/ast