I’m hoping that this will be useful to some folk.
I have written a parser in Kotlin common code.
It takes a context-free grammar (EBNF like syntax) and provides a parser.
Works at runtime, no code generation step.
I’d be interested in any feedback, thoughts, contributions.
an introduction article is here
and the code is of course available from github.