...Sorry, hit the enter button too fast. I've some more to say. :-)
For the Java environment Xtext is a good choice (historically the predecessor of Langium; both are sharing the same idea/approach).
The main advantage for your requirement is, I guess, that by defining the concrete syntax grammar implicitly a tree data algebra is defined what the parser is using to create the tree representation of a sentence of your language. You may see this as a Concrete Syntax Tree and process it that way.
(Or did I interpret your "CST" wrongly?)
11/26/2022, 6:59 PM
Interesting. Yeah I like the idea of something that is explicitly integrated with language servers and therefore IDEs. I’m writing a blog post about these precise tools, what I call “tooling for tooling”, that I’ll probably post here soon