Почему генераторы парсеров, а не просто настраиваемые парсеры?

Название подводит итог. Предположительно все, что можно сделать с помощью генераторов синтаксического анализатора, генерирующего исходный код (которые, по сути, жестко кодируют грамматику, которая должна быть проанализирована в программе), может быть выполнено с помощью настраиваемого синтаксического анализатора (который будет поддерживать грамматику, которая будет -parsed soft-coded как структура данных).

Я полагаю, что жестко запрограммированный парсер сгенерированного кода будет иметь бонус к производительности с одним меньшим уровнем косвенности, но беспорядок, связанный с необходимостью его компиляции и запуска (или exec () его в динамические языки), и общая неуклюжесть генерации кода кажется довольно большим недостатком. Есть ли какие-либо другие преимущества генерации кода вашими парсерами, о которых я не знаю?

Я вижу, что в большинстве случаев генерация кода используется для обхода ограничений в возможностях метапрограммирования языков (например, веб-фреймворки, АОП, взаимодействие с базами данных), но весь процесс лексического анализа кажется довольно простым и статичным. , не нуждаясь ни в каком дополнительном динамизме метапрограммирования, который вы получаете от генерации кода. Что дает?

12
задан Brian Tompsett - 汤莱恩 19 June 2016 в 22:10
поделиться