I think the tools are challenging, but it is soooo refreshing to have tools that don't pass the complexity on to the user. The parser library that has done this for me is https://github.com/engelberg/instaparse. Using Instaparse is downright liberating. BNF in, parser out. Done.