Earlier quoted context omitted.
I'm in the same boat. I've found https://github.com/harc/ohm to be a pretty pleasant grammar and parser to use. Ohm also has a nice interactive editor: https://ohmlang.github.io/editor/
Ohm has several impressive features, such as separation of grammar and semantics and incremental parsing capabilities. The base performance however very low, as in two orders of magnitude lower than most other parsing libraries in JavaScript. See benchmark at: https://sap.github.io/chevrotain/performance/ that I have created.
What parsing algorithm does chevrotain use under the hood? Does it allow left-recursive and right-recursive productions/rules?