Есть ли рамки для определения парсеров в JavaScript? - PullRequest
5 голосов
/ 24 июня 2009

Существует ли инфраструктура JavaScript, которая позволяет определять грамматику синтаксического анализа с использованием синтаксиса JavaScript, аналогично тому, как Ирония делает это для C #?

Ответы [ 4 ]

4 голосов
/ 13 июля 2016

Я создал разбор JavaScript DSL с именем Chevrotain .

Источник: https://github.com/SAP/chevrotain

Онлайн площадка: http://sap.github.io/chevrotain/playground/

Это , а не комбинатор Парсера, такой как Ирония, но он очень похож так как он позволяет "определить грамматику синтаксического анализа с использованием синтаксиса JavaScript" без фазы генерации кода.

Использование его похоже на «ручное построение» рекурсивного приличного парсера, только без большей части головной боли, такой как:

  • Создание функции Lookahead (решение, какую альтернативу выбрать)
  • Автоматическое восстановление после ошибок.
  • Обнаружение левой рекурсии
  • Обнаружение неоднозначности.
  • Информация о местоположении.
  • ...

, поскольку Chevrotain обрабатывает это автоматически.

3 голосов
/ 24 июня 2009

Я не знаю много о том, как работает Irony, но у Криса Дабла есть библиотека, которая позволяет вам определять грамматики в JavaScript здесь: http://www.bluishcoder.co.nz/2007/10/javascript-parser-combinators.html. Код доступен на GitHub .

Это библиотека "комбинатор синтаксического анализа", которая означает, что вы объединяете парсеры для каждого производства в вашей грамматике в больший парсер, который анализирует все это. Каждая «подграмма» - это просто функция, которую вы создаете, вызывая библиотечные функции.

0 голосов
/ 22 августа 2017

PEG.js может быть одним из решений.

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

Особенности

Простой и выразительный грамматический синтаксис Интегрирует как лексический, так и синтаксический анализ Парсеры имеют отличные отчеты об ошибках из коробки Основан на синтаксическом анализе грамматического формализма выражения - более мощный, чем традиционные парсеры LL (k) и LR (k) Используется из браузера, из командной строки или через JavaScript API

0 голосов
/ 24 июня 2009

Это не совсем то, что вам нужно, но эта статья проходит через создание синтаксического анализатора рекурсивного спуска в javascript для самого javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...