| Yes - Pratt embedded in a recursive descent parser is hard to beat. I say this after writing parsers on and off for years. Like the author, I also went through a cycle of tools but in my case it was recursive descent, LR (Flex/Bison), parser combinators (Haskell), LL (Antlr) before returning to recursive descent. In the end the recursive descent (+Pratt) beats them all, in my opinion: - you can easily provide properly helpful error messages - best general performance - the parser can be debugged directly using normal debugging tools - flexibility - all the tools and features of the host programming language are available - zero dependencies, no build tool integration required. The only issues I could see that the author has regarding recursive descent are excessive boiler plate and the complexity of handling precedence and associativity but: - there should be no more boiler plate than there is for any other programming task - you write functions, methods, classes, etc. just like normal dev to reduce boilerplate. - using Pratt provides the structure to handle all the operator rule complexity. |