Было ли изменение языка, которое требовало этого, или какая-то практическая причина, по которой Бизон больше не был подходящим или оптимальным?
Я видел в википедии, что они переключились, ссылаясь на примечания к выпуску GCC 3.4 и GCC 4.1 .
Эти примечания к выпуску гласят:
Рукописный синтаксический анализатор C ++ с рекурсивным спуском заменил производный YACC синтаксический анализатор C ++ из предыдущих выпусков GCC. Новый синтаксический анализатор содержит значительно улучшенную инфраструктуру, необходимую для лучшего анализа исходных кодов C ++, обработки расширений и четкого разделения (где это возможно) между надлежащим анализом семантики и анализом. Новый парсер исправляет многие ошибки, найденные в старом парсере.
А также:
Старый синтаксический анализатор C и Objective-C на основе Bison был заменен новым, более быстрым, написанным от руки, парсером рекурсивного спуска
Я хотел бы знать, какие у них были реальные проблемы, и почему было невозможно / нецелесообразно решать с помощью Bison