У меня иногда встаёт задача интерактивного прототипирования и отладки некоторой грамматики. У меня есть некоторое представление о том, какие правила должны быть в грамматике (возможно, неполное или где-то ошибочное), и мне хочется написать какие-то тесты, немедленно увидеть получившееся AST или ошибки разбора, что-то изменить в грамматике или тестах, немедленно увидеть, что изменилось в AST и т.д.
Обычно для этой цели я использую
язык M и старую бета-версию
Intellipad 2009 года, которые были частью ныне почившего майкрософтовского проекта Oslo. В целом, это удовлетворяет моим требованиям, хотя там отсутствуют многие удобства, которые бы мне хотелось иметь: автодополнение(и в редакторе грамматики, и в редакторе разбираемого текста), навигация к декларации правила, поиск мест использования правила, автоматическое переименование, возможность определить правила для цветной подстветки разбираемого кода (хотя бы синие ключевые слова и зеленые комментарии), фолдинг исходного кода и AST. Сообщения об ошибках разбора также оставляют желать лучшего: хотя они сообщают, в каком месте появилась ошибка (и подчёркивают его красным), и там даже есть некоторое автоматическое восстановление после ошибок, они не сообщают, например, какие токены были бы допустимыми в данном месте.
Вот как это выглядит:
Возможно ли (легко ли) реализовать такое приложение на основе Nitra? Можно ли устранить те недостатки, о которых я писал выше?