Конференция "Прочее" » Свой Highlighter для TSynEdit
 
  • Тимохов Дима © (07.09.16 22:32) [0]
    Коллеги!

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

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

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

    Спасибо!
  • Игорь Шевченко © (08.09.16 10:09) [1]
    На sql.ru говорили, что это одно из тестовых заданий :)
    Тестируешься ?
  • Тимохов Дима © (08.09.16 10:35) [2]

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

    Нет.

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

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

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

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

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

    Плюс ко всему - в интернете очень обрывочная информация...
  • Игорь Шевченко © (08.09.16 10:39) [3]

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


    Не сталкивался
  • Владислав © (08.09.16 12:40) [4]
    У них есть SynEdit\Demos\HighlighterDemo\.
    Однако мне от этого не намного легче стало, когда я поверхностно этим вопросом интересовался.
  • Тимохов Дима © (08.09.16 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.

    Надеюсь, полезно.
 
Конференция "Прочее" » Свой Highlighter для TSynEdit
Есть новые Нет новых   [134431   +14][b:0][p:0]