how to parse kotlin code?
Asked Answered
S

6

10

I need to analyse kotlin files code, to detect the keyword "data" and "?".

The issue is I don't find any libs like JavaParser. I don't need powerfull tools, just something who return me the number of the lines.

Any idea?

Showdown answered 30/8, 2017 at 9:14 Comment(4)
Every Tool/IDE has a "find in path" function. Or is this something that needs to be generated automatically?Nutcracker
@thomas-kleßen What do you mean? I'm developping a code analyse plugin, I need something more powerfull than a simple character search. Please tell-me than you're not the one who low-vote me !Showdown
No. It wasn't me. I just asked what usecase you have in mind.Nutcracker
I have a project that wraps the official Kotlin parser at github.com/cretz/kastreeHubris
S
7

I use antlr4 to do it. And I create an open source lib: https://github.com/sarahBuisson/kotlin-parser

<dependency
   <groupId>com.github.sarahbuisson</groupId>
   <artifactId>kotlin-parser</artifactId>
</dependency>
Showdown answered 27/11, 2017 at 12:16 Comment(0)
C
2

Besides the tools mentioned in other answers, here is another one someone may find useful:

https://github.com/kotlinx/ast

Conduit answered 3/9, 2021 at 7:43 Comment(0)
P
1

You would need to either find a Kotlin parser, or write your own.

For this subset of parsing you may be able to cheat, as data is a keyword, so if you see data with non letters each side you know it is the keyword.

For ?, it depends which meaning you want, the elvis one can be detected by the dot else try the nullable meaning if the ? is next to a letter.

Patinous answered 8/9, 2017 at 12:21 Comment(1)
Except if it's in a string. Both seems pretty common in English.Amboina
M
1

You can try Kastree -- simple library to manipulate Kotlin source code as a set of AST objects.

https://github.com/cretz/kastree

Mosstrooper answered 12/4, 2021 at 15:2 Comment(0)
H
0

See this [0] Kotlin code parsing related discussion. They talk about using antlr v4 grammar to parse the Kotlin code.

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

Hereditary answered 27/11, 2017 at 8:10 Comment(1)
Yep, I use a similar stuff to developp a lib who do it: github.com/sarahBuisson/kotlin-parserShowdown
M
0

I have not yet written a Kotlin language grammar for it.

But I have implemented a parser in Kotlin, id that is any use.

It is Kotlin common code, so should work for any target platform.

There is an article about it here, and the code is on github.

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

Masculine answered 1/4, 2020 at 8:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.