Stavo facendo ricerche sulla suite di compilatori gcc su wikipedia qui , quando è venuto fuori questo:
GCC iniziò usando i parser LALR generati con Bison, ma gradualmente passò ai parser scritti in discesa ricorsiva scritti a mano; per C ++ nel 2004, e per C e Objective-C nel 2006. Attualmente tutti i front-end usano parser scritti a mano ricorsivi-discendenti
Quindi con quest'ultima frase (e per quanto mi fidi di Wikipedia) posso sicuramente dire che "C (gcc), C ++ (g ++), Objective-C, Objective-C ++, Fortran (gfortran), Java (gcj), Ada (GNAT), Go (gccgo), Pascal (gpc), ... Mercury, Modula-2, Modula-3, PL / I, D (gdc) e VHDL (ghdl) "sono tutti front-end che no utilizzare più un generatore di parser. Cioè, usano tutti parser scritti a mano.
La mia domanda allora è: questa pratica è onnipresente? In particolare, sto cercando risposte esatte a "l'implementazione standard / ufficiale di x ha un parser scritto a mano" per x in [Python, Swift, Ruby, Java, Scala, ML, Haskell]? (In realtà, anche le informazioni su altre lingue sono benvenute qui.) Sono sicuro di poterlo trovare da solo dopo molte ricerche. Ma sono anche sicuro che questo sia facilmente rispondibile dalla comunità. Grazie!