Как строится подсветка синтаксиса? - PullRequest
0 голосов
/ 09 января 2010

Сейчас я создаю редактор для разработчиков, используя Lazarus, и, как и любой хороший редактор для разработчиков, он должен иметь подсветку синтаксиса, из-за чего я хочу знать некоторые вещи:

  • Как обычно создается подсветка синтаксиса (используя множество if s для изменения шрифта на TextField?
  • TSynEdit очень приятно это делать?
  • Как использовать TSynEdit (ссылки и ресурсы)?

Ответы [ 2 ]

3 голосов
/ 09 января 2010

Вы можете прочитать исходный код Eclipse или VIM. В Eclipse вы найдете базу абстрактного синтаксического дерева. Вдобавок к этому синтаксические анализаторы, которые тщательно написаны, чтобы быть терпимыми к ошибкам, так как выполняемый код часто не соответствует полной грамматике языка. Выделение использует информацию в синтаксическом дереве.

3 голосов
/ 09 января 2010

Вы действительно можете увидеть отличный пример для себя, если посмотрите на редактор для SharpDevelop . Он реализован в C #, но использует большой ООП, который должен быть легко переносим на другие платформы или языки.

Большинство самодельных подсветок синтаксиса, как правило, используют элемент управления MS Windows RichText, но они обычно медленны и неуклюжи и действительно замедляются при добавлении большого количества кода.

...