Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
15-1207906190
Washington
2008-04-11 13:29
2008.05.25
Web-аналог TreeView


2-1209824858
Res
2008-05-03 18:27
2008.05.25
wm_quit


8-1180607479
First
2007-05-31 14:31
2008.05.25
Vidio Проигрыватель


2-1208965349
smartleds
2008-04-23 19:42
2008.05.25
Подскажит плз, как при нажатии на кнопку произвести закрытие


2-1209133075
savyhinst
2008-04-25 18:17
2008.05.25
OpenFileDialog, туда, где недавние документы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский