Автор оригинала: Ricardo Ferreira da Silva.
Я бы начать свой первый пост на кодамента, введя всех вас на технологию, которая спасла мое время много раз.
Может быть, некоторые из вас, кто прошел через университетский класс о компиляторах, знает о компиляции усилий, он входит в правильному анализу целого языкового синтаксиса в абстрактное синтаксическое дерево, из которого вы можете генерировать желаемый выход или анализировать содержимое данного исходного кода или анализировать содержимое данного исходного кода Отказ
Это усилие становится еще выше, если анализ очень большие файлы – это требование наряду с производительностью. Если вы когда-нибудь пытались создать пользовательский парсер или даже с помощью определенных библиотек в C/C ++, вы знаете, что это не приятный опыт.
Таким образом, когда я впервые пришлось написать правильный парсер на своей работе, я попытался расследовать, какие технологии были в 2018 году, и если бы я мог сделать это с Node.js, мой любимый язык сценариев.
Первое, что я пытался: Peg.js Отказ
При написании самого анализатора с синтаксисом peg.js был куском пирога, результаты производительности оставили желаемую желанию, когда она пришла к производительности. Я реализовал инструмент «IDE», например, для предоставления пользователю фрагментов, предложению, синтаксические ошибки и т. Д. Производительность PEG.JS для больших файлов просто не имела необходимой мощности.
Я был на грани рассмотрения привлечения анализатора ручного сборки, когда я узнал о Chevrotain Отказ
Видите ли, Chevrotain не является генератором анализатора, такими как Peg.js, вместо афиша парсера. Пока наращивание парсера немного сложнее и гораздо более Verboose, производительность быстро разлагается, как это может быть доказано их онлайн-ориентиром.
Таким образом, мы можем прибыть на мой вывод. Если вам нужен мощный парсер, и вы хотите развить его в JavaScript, ваша лучшая ставка – Chevrotain Отказ