Представляем Chevrotain — лучший инструмент для написания парсеров на Javascript.

Я хотел бы начать свой первый пост на Codementor с того, что познакомлю всех вас с технологией, которая много раз экономила мое время.

Возможно, кто-то из вас, кто прошел университетский курс по компиляторам, знает, сколько усилий уходит на то, чтобы правильно разобрать весь синтаксис языка в абстрактное синтаксическое дерево, из которого вы можете сгенерировать желаемый результат или проанализировать содержимое заданного исходного кода. .

Это усилие становится еще выше, если анализ очень больших файлов является требованием наряду с производительностью. Если вы когда-нибудь пытались создать собственный парсер или даже с помощью определенных библиотек на C/C++, вы знаете, что это не очень приятный опыт.

Таким образом, когда мне впервые пришлось написать правильный синтаксический анализатор на моей работе, я попытался выяснить, какие технологии были доступны в 2018 году, и могу ли я сделать это с помощью node.js, моего любимого языка сценариев.

Первое, что я попробовал, было: PEG.js.

Хотя написать сам парсер с синтаксисом PEG.js было проще простого, результаты производительности оставляли желать лучшего, когда дело касалось производительности. Я реализовал инструмент, похожий на IDE, чтобы предоставить пользователю фрагменты, предложения, синтаксические ошибки и т. д. Производительность PEG.js для больших файлов просто не имела необходимой мощности.

Я был на грани того, чтобы рассмотреть вопрос о реализации парсера ручной сборки, когда я узнал о Шевротен.

Видите ли, Chevrotain — это не генератор синтаксических анализаторов, как PEG.js, а API синтаксического анализа. Хотя создание синтаксического анализатора немного сложнее и гораздо более многословно, производительность молниеносно высока, что может быть подтверждено их онлайн-тестом.

изображение.png

Таким образом, мы можем прийти к моему выводу. Если вам нужен мощный синтаксический анализатор и вы хотите разработать его на Javascript, лучше всего Шевротен.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *