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

Вниз

Свой 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.004 c
2-1467378535
Sonia
2016-07-01 16:08
2018.07.01
Файл в BIN и обратно


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


2-1467746107
dmk
2016-07-05 22:15
2018.07.01
TThread


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


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