Я начинаю искать подход, основанный на данных, когда код начинает выглядеть следующим образом.Это может быть так же просто, как таблица или дерево с указателями на функции, как вы предложили.
Если это какой-то анализатор, созданный вручную, вы можете посмотреть некоторые ссылки на разбор дляидеи о том, как использовать определение грамматики для анализа (либо интерпретируя грамматику по требованию, либо используя инструмент генерации кода, который использует грамматику в качестве входных данных).
Я часто использую рекурсивное спуск вручнуюпарсеры.Как правило, я создаю класс, содержащий состояние, выставляю одну общедоступную функцию «Parse» и реализую каждое правило как частную функцию-член.Эти функции-члены имеют небольшие размеры и имеют явные имена, поэтому код становится вполне читабельным.Также очень легко написать тесты для него.