Существуют ли какие-либо 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
Это сложно. Я сам делаю то же самое.
Один из подходов:
Вам нужен синтаксический анализатор, который даст вам массив доступных в настоящее время АСТ для текста вплоть до токена перед текущей позицией курсора.
Оттуда вы можете видеть, что следующий токен может иметь несколько типов (обычно один) и выполнять завершение на основе частичного текста.
Если я когда-либо получаю свой инкрементный парсер, я отправлю ссылку.
Удачи, и дайте мне знать, если вы найдете пакет, который делает это.
Крис.