Реализация поведения, подобного IntelliSense, в пользовательских редакторах для доменных языков - PullRequest
7 голосов
/ 20 сентября 2008

Я создаю DSL с шаблонным редактором, очень похожим на системы правил в Алиса . Пользователи смогут выбирать отношения из списка, а также объекты для применения отношения. Эти два списка должны быть отфильтрованы на основе допустимых типов - например, если отношение «больше чем», то доступные объекты должны иметь тип, для которого реализовано «больше чем».

Точно так же, если выбран объект, который не сопоставим с большим, то это отношение не должно быть в списке потенциальных отношений. Я думаю, что суть этой проблемы - проверка типов, но я не уверен, что это лучший способ использовать этот тип логики в моем приложении. Кто-нибудь знает о существующих библиотеках проверки типов для DSL?

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

Ответы [ 2 ]

2 голосов
/ 20 сентября 2008

Вы можете посмотреть на Сцинтилла . Это компонент редактирования, используемый Notepad ++, среди других инструментов. Он имеет некоторую поддержку для выполнения автозаполнения, хотя я сам не пробовал использовать его, поэтому я не уверен, насколько хорошо он работает. Это открытый исходный код, поэтому, если он не отвечает вашим потребностям, вы можете расширить его без особых хлопот, я думаю.

1 голос
/ 20 сентября 2008

Это может помочь на стороне intellisense - CodeTextBox

...