An LR parsing library with wonderfully helpful error messages on invalid or ambiguous grammars: https://smallcultfollowing.com/babysteps/blog/2016/03/02/nice-errors-in-lalrpop/