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

Вниз

Свой Highlighter для TSynEdit   Найти похожие ветки 

 
Тимохов Дима ©   (2016-09-07 22:32) [0]

Коллеги!

Есть у кого опыт по созданию своего Highlighter"а для TSynEdit?

В принципе понятно, что нужно писать потомка для TSynCustomHighlighter.
Также понятно, что можно воспользоваться SynGen.exe (идет вместе в TSynEdit). Но все это как-то мутно описано.

Может есть хорошее описание сабжа?

Спасибо!


 
Игорь Шевченко ©   (2016-09-08 10:09) [1]

На sql.ru говорили, что это одно из тестовых заданий :)
Тестируешься ?


 
Тимохов Дима ©   (2016-09-08 10:35) [2]


> На sql.ru говорили, что это одно из тестовых заданий :)
> Тестируешься ?

Нет.

Надоело свой редактор поддерживать для встроенного скриптового языка.
Язык хочу оставить, а редактировать в TSynEdit сделать. Соответственно встала проблема Highlighter"а.

Игорь, ты что-то про это знаешь?

Я вчера весь день тему изучал.
Главный вопрос такой: вот QSynHighlighterPas.pas  (для паскаля) они писали "руками" или сгенерировали из чего-то?

У них там есть SynGen.exe для генерации. Но он мутно описан. К тому же, глядя на код QSynHighlighterPas.pas, не могу понять - как он сгенерен из SynGen.exe. Похоже, что QSynHighlighterPas.pas таки писан "руками".

Но если это так, то это жуть какая-то, с этими ихними Hash.

Плюс ко всему - в интернете очень обрывочная информация...


 
Игорь Шевченко ©   (2016-09-08 10:39) [3]


> Игорь, ты что-то про это знаешь?


Не сталкивался


 
Владислав ©   (2016-09-08 12:40) [4]

У них есть SynEdit\Demos\HighlighterDemo\.
Однако мне от этого не намного легче стало, когда я поверхностно этим вопросом интересовался.


 
Тимохов Дима ©   (2016-09-08 13:26) [5]

Коллеги!

Может, кому полезно будет.

1. Генератор SynGen\SynGen.exe - ерунда. А) Описан плохо. Б) Не понятно, как работает.

2. Делать надо руками. За пример взять что-то не очень сложное. Я взял SynHighlighterRuby.pas. Ибо SynHighlighterPas.pas дюже большой.

3. По сути - это автомат. Главный метод MakeMethodTables (у меня версия SynEdit 2.0.6 - последнюю не взял, ибо у меня еще Delphi2007, где нет уникода, а в последней версии SynEdit все на уникоде - у меня не вышло заставить работать его с кириллицей на Delphi2007).

Плюс Ruby - там "забили болт" на Hash (я вообще не понял, зачем он нужен - видимо, для скорости).

4. В общем берете SynHighlighterRuby.pas, делаете свой класс и последовательно дописываете автомат разбора. Какие-то вещи можно брать и из SynHighlighterPas.pas (я брал разбор строк оттуда).

5. Удобная деталь. Полученный SynHighlighter можно использовать как парсер (если его, конечно, верно написать - например в Ruby они не верно строки разбирают - в случае "abc""defg" у них получается два токена "abc" и "defg").

6. Для моего случая SynHighlighter был написан часа за 2-3.

Надеюсь, полезно.



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

Форум: "Прочее";
Текущий архив: 2018.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.001 c
1-1358525546
Eraser
2013-01-18 20:12
2018.07.01
Объявление метода интерфейса с индексом


15-1473276737
Тимохов Дима
2016-09-07 22:32
2018.07.01
Свой Highlighter для TSynEdit


2-1467622935
Andrey K
2016-07-04 12:02
2018.07.01
Не ищет переменную по Ctrl левая клавиша мыши.


8-1242059975
noH@ker
2009-05-11 20:39
2018.07.01
О DirectSound


2-1467378535
Sonia
2016-07-01 16:08
2018.07.01
Файл в BIN и обратно





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