Существуют ли какие-либо javascript-фреймворки для синтаксического анализа/автоматического заполнения языка, специфичного для домена?

У меня есть грамматика для определенного для домена языка, и мне нужно создать редактор кода javascript для этого языка. Существуют ли какие-либо инструменты, которые позволят мне генерировать a) инкрементный парсер javascript b) механизм автозаполнения/автоматического предложения javascript?

Спасибо!

Ответы

Ответ 1

Вы можете захотеть jison, генератор парсера js. С точки зрения автозаполнения/автоматического предложения... большая часть материала там я знаю, если больше основано на завершении слова, а не на завершении кода. Но как только у вас работает парсер, я не думаю, что эта часть слишком сложна.

Ответ 2

Пример реализации поддержки содержимого (автозаполнение) используя Chevrotain Jarscript Parsing DSL:

https://github.com/SAP/chevrotain/tree/master/examples/parser/content_assist

Chevrotain был разработан специально для создания парсеров, используемых (как часть) языковых служб в редакторах /IDE. Некоторые из соответствующих функций:

  • Автоматическое Восстановление ошибок/Отказоустойчивость, поскольку редакторы и IDE должны иметь возможность обрабатывать входы "в основном действительные".
  • Каждое правило грамматики может использоваться в качестве стартового правила, так как редактор /IDE может потребоваться только для синтаксического разбора .

Ответ 3

Это сложно. Я сам делаю то же самое.

Один из подходов:

Вам нужен синтаксический анализатор, который даст вам массив доступных в настоящее время АСТ для текста вплоть до токена перед текущей позицией курсора.

Оттуда вы можете видеть, что следующий токен может иметь несколько типов (обычно один) и выполнять завершение на основе частичного текста.

Если я когда-либо получаю свой инкрементный парсер, я отправлю ссылку.

Удачи, и дайте мне знать, если вы найдете пакет, который делает это.

Крис.