@maetl: thanks! It’s funny, when I started writing Gazelle, I believed pretty strongly in that mantra (”parsing and grammars are amongst the most studied and well understood areas of computer science”). I didn’t expect to invent any new algorithms, I mainly just wanted to take existing algorithms and give them different packaging.
But before long I was trying to figure out if I could improve on the properties of those algorithms that made them less that ideal from a user perspective. I studied the documentation from existing tools and looked at the cases they said they couldn’t handle, and tried to figure out if I could handle them. And before I knew it, I had thought of a new algorithm!
@Kay: thanks! I agree that having the tool be able to tell you definitively that it is not LL(k) or LL(*) will make things much more user-friendly. I could still use a bit of work on error messages that give you every bit of information about *why* it was not LL(k) or LL(*). In the future I should be able to draw pretty graphs that make the problem obvious. That will take a bit of work, but it’s totally doable, and I think will make for a compelling user experience.