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