I remember Wirth&#x27;s approach of preferring recursive-descent over the bottom-up LR, LALR, SLR, etc., was quite controversial at the time, since prevailing wisdom was that bottom-up parser-generators could parse more complex grammars and were widely believed to be more efficient. Now it seems things have turned in the opposite direction, with both large production-quality compilers and simple educational &quot;toy&quot; ones using some variant of recursive-descent. When GCC switched from a Bison-generated parser to recursive-descent, it actually made it faster(<a href="https:&#x2F;&#x2F;gcc.gnu.org&#x2F;wiki&#x2F;New_C_Parser" rel="nofollow">https:&#x2F;&#x2F;gcc.gnu.org&#x2F;wiki&#x2F;New_C_Parser</a> ). The fact that LL languages are theoretically a subset of LR has not stopped recursive-descent from being used to successfully parse languages like C++ whose grammar is actually Turing-complete.