Извините за поздний ответ:
Вообще говоря, для создания синтаксического анализатора лучше всего описать грамматику в аннотации, а затем сгенерировать анализатор с помощью генератора синтаксического анализатора.
Я создал библиотеку lucene-query-parser.js , используя грамматику PEG , которая находится в репозитории Github здесь .Эта грамматика относится только к PEG.js и использует JavaScript для реализации результата стиля AST для проанализированного запроса.
Нет необходимости возвращать структуру стиля AST, но я обнаружил, что этосамый полезный для проекта, для которого я написал синтаксис.Вы можете заново реализовать грамматику, чтобы получить любой результат синтаксического анализа, который вы хотели.