AST <-> Editor непонятки
От: Kolesiki  
Дата: 21.05.15 17:22
Оценка:
Мужики! Научите уму-разуму, плиз!
Занимаюсь похожим с вами делом — пишу IDE для MSIL (пока никуда не выложена). С помощью простой PEG-библиотечки генерю AST (уже есть грамматика почти для всего, кроме ОпКодов).
Есть редактор (FastColoredTextBox), где я буду жонглировать стилями. И вот в этом месте непонятно, куда впрягать лошадь! Вариант:
1. "Лошадь впереди телеги": Сразу засунуть весь текст в редактор, а потом оббежать всё AST (где ещё нужно сохранить позицию в тексте!) и применять стили там, где нужно.
2. "Лошадь позади телеги": брать AST и тупо восстанавливать текст, попутно применяя стили.

Влад говорил, что у вас ДВА дерева (как бы для редактора и компилятора). Теоретически, понимаю зачем, но практически — фик знает... Мне кажется, можно обойтись тем, что хранить "редакторскую" часть вместе с компилляционной (по кр. мере я не рассчитываю компилять мегабайтные простыни). В любом случае, интересно, каким способом вы раскрашиваете код?

Ну и если совсем не ноу-хау, что делать при изменении в редакторе? Вы что-то говорили про "высокоуровневую" структуру кода (типа уровня класса/деклараций), но если даже всунуть простую '{' в код, весь парсинг летит к чертям. Допускаю, что Nitra куда мощнее в плане распознавания, но это не избавляет от несуразности кода, который и человек-то может не понять! В общем, у меня при изменениях только одна идея — трясти надо надо перекомпилять. Тем более, что "вклеенный" код может быть весьма большим и декларативно значимым (пару пропертей ввели, например!).

Можно особо не расписывать, только идею киньте. Если не жалко.
Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.