Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Вопрос из любопытсва: как устроен редактор кода?   Найти похожие ветки 

 
TStas ©   (2008-04-08 21:14) [0]

Он ведь, похоже, сразу от Tedit наследует. Ведь он совершенно не моргает, а на изменение текста реагирует сразу, делая жирным нужные слова. Не похоже на RichEdit. Понятно, что парсят текст из него в отдельном потоке. Но все равно... Вот ворд. Пишешь в нем что-то, а он очень не скоро подчеркивает неправильные слова и т. д. А дельфи сразу. Понятно, что дельфям надо только зарезервированные слова выделять, а их мало, а ворду вообще весь словарь смотреть, а он весьма большой. Но всё равно. Или его от мемы наследовали, а процедуру рисования перекрыли? Тоже ведь нет. И курсор совсем иначе себя ведёт. Как он всё-таки устроен?


 
TUser ©   (2008-04-08 21:19) [1]

Если реально интересно, как такое может быть, то есть набор компонентов SynEdit с такими же ТТХ и открытым исходным кодом.


 
Rouse_ ©   (2008-04-08 21:19) [2]

Посмотри Scintilla или SynEdit - два ярких представителя редакторов с поддержкой синтаксиса. Мне больше нравиться движок Scintilla, он правда под VC++, но достаточно просто дружится и с Дельфи.


 
TStas ©   (2008-04-08 21:57) [3]

Вот SynEdit качнул. Меня не сама поддержка синтаксиса интересует, а как реализована она. Поддержка очевидно - парсер, который трудится в отдельном потоке.


 
Игорь Шевченко ©   (2008-04-08 22:41) [4]

У ворда и у delphi задачи несколько разные. Поэтому ворд может с проверкой орфографии и подождать, пустив поток, ответственный за орфографию, с пониженнм приоритетом.


 
Loginov Dmitry ©   (2008-04-08 23:08) [5]

> Вот SynEdit качнул. Меня не сама поддержка синтаксиса интересует,
> а как реализована она. Поддержка очевидно - парсер, который
> трудится в отдельном потоке.


Насчет очевидности - посмотри исходники. Мне, например, наличие доп. потока совершенно неочевидно. К тому же моментальное время реакции на любые изменения говорит скорее об отсутствии доп. потока.


 
Rouse_ ©   (2008-04-08 23:30) [6]


> говорит скорее об отсутствии доп. потока.

...или о хорошей оптимизации оного ;)


 
PEAKTOP ©   (2008-04-09 00:48) [7]

> Rouse_ ©   (08.04.08 23:30) [6]
> > говорит скорее об отсутствии доп. потока.
> ...или о хорошей оптимизации оного ;)


Угу-мс. Чего только стоят замена ключевых слов прямо сразу на хэши в парсере (TSynHighliter....) Паскаля и Си.


 
TStas ©   (2008-04-09 11:28) [8]

>Угу-мс. Чего только стоят замена ключевых слов прямо сразу на хэши в парсере  Ну, так очевидно же, что так быстрее будет работать. Парсер выделил идентификаторы и сразу заменил их на ключе6вые слова. Ясно же, что один раз проверить на ключевое слово гораздо быстрее, чем потом синт. анализатор будет одно и тоже по сто раз проверять и откатываться. Разве это не самоочевидный приём? Ведь ключевое слово, такая же териминальная лексема, как любая другая, чего ж в этом удивительного.



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
2-1209008142
Andr
2008-04-24 07:35
2008.05.25
Создание формы в мной созданном обьекте.


2-1209015542
Foo Fighters
2008-04-24 09:39
2008.05.25
Как в искать пустые записи в ADO?


2-1209639326
lewka-serdceed
2008-05-01 14:55
2008.05.25
Удаление файла


2-1209136516
snake-as
2008-04-25 19:15
2008.05.25
Работа с файлом структур


15-1207825581
sms
2008-04-10 15:06
2008.05.25
Интернет шлюз