Not exactly. Kotlin itself is the “parser” from that quote, Koin just adds a specific set of “rules” that extend the capabilities of that host language. Those rules are nothing more than functions and lambdas, but they act as a specific gateway into the Koin “domain” of binding types in modules, etc.
From a purely semantic standpoint, Koin does not have a true “DSL” since it neither interprets its own language, nor parses a language to generate code. It doesn’t have its own language at all, it runs within the Kotlin language. That’s what makes it an “internal DSL”.
Koin is just a series of function calls that you call in a particular order, just like any other library, but what makes it a “DSL” in the Kotlin-sense is that those function calls are more semantic than imperative. In other-words, calling a Koin function doesn’t do something, it describes something. Once you’ve described everything, then Koin is able to do what it needs, but the complexity of what it is doing is intentionally hidden underneath the function calls exposed through its DSL.