Re: Фундаментальные вопросы по Intellisense
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.05.10 19:24
Оценка:
Здравствуйте, gakysei, Вы писали:

G>Есть некий язык и есть задача — сделать для него удобный intellisense.


Язык программирования?

G>Поисследовав тему возникло несколько вопросов:

G>1. Определение контекстов. При наборе текста должна вылезать подсказка только с теми выражениями или переменными, которые доступны в текущем контексте. Как хранить эти контексты не совсем понятно.

Что такое контекст в твоем понимании свершено не понятно.
А вообще, схема примерно одинаковая. Должен быть некий движок который быстренько типизирует выражение, получает по нему информацию о типах, в полученной информации по местоположению находит нужные элементы и далее уже делает то что нужно пользователю.

G>2. Необходимо выводить подсказку на синтаксически не верные выражения. Проблема в том, что парсер обламывается раньше, чем дойдет до нужного места. Это пожалуй самая сложная проблема.


Парсер для такого дела должен уметь востанавливаться после обнаружения ошибки и продолжать парсинг. Более того движок типизации тоже должен стараться работать при наличии ошибок.

Я когда стал компилятора Nemerle приспосабливать под нужды движка интеллисенса, то очень долго его дорабатывал. И все равно не все замечательно. По сути нужно или разрабатывать компилятор сразу с учетом нужд интеллисенса, или создавать отдельный движок (так сделано в Решарпере и интеграциях к MS VS C#/VB от самой же MS.

G>Если есть какая-нибудь литература по теме, буду благодарен.


Ну, по этому вопросу литературы просто нет в принципе. Можно только поглядеть на код подобных движков для других языков. На тот же Nemerle в частности. Есть еще интеграция к IronPython-у (поставляется с VS SDK).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.