It took me around two years, but I believe I finally fixed left recursion support in my Arborist library - https://github.com/davidkellis/arborist/.

In early January I discovered another left recursion edge case that Arborist didn’t handle properly, so I spent most of Januaury fixing that. Around mid-January I got it fixed and then improved performance enough that I think it’s sufficient for parsing Able.

The next step is to finalize the Able grammar and get to work on converting the parse tree into a nice AST.