So, yes, as long as you have a sufficiently powerful meta-language, eDSL is almost always better than a library. But yet, if your language is not powerful at all, DSLs (standalone) are still better then the libraries, they're just a bit more complicated to implement.
Use powerful enough language.
https://en.wikibooks.org/wiki/Common_Lisp/External_libraries...
Here, you can pretty much write out your BNF directly and get a parser out of it.