Главная страница
    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.006 c
2-1209833302
Res
2008-05-03 20:48
2008.05.25
Критическая секция


2-1209554677
budiman
2008-04-30 15:24
2008.05.25
paradox выдает ошибку


15-1208166366
kami
2008-04-14 13:46
2008.05.25
2 модема на одном компьютере


15-1208175607
samalex
2008-04-14 16:20
2008.05.25
Не выгружается приложение при выключении ПК


2-1209029240
vinni2000
2008-04-24 13:27
2008.05.25
Преобразование даты в число





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский