Подсветка синтаксиса инструмент / язык, который работает с несколькими редакторами - PullRequest
9 голосов
/ 23 января 2012

Существует ли какой-либо инструмент, который позволил бы мне указать подсветку синтаксиса для данного языка, а затем сгенерировать файлы подсветки синтаксиса для некоторых наиболее распространенных редакторов?

Я спрашиваю, потому что я разрабатываю специфичную для доменаязык, и я хотел бы предоставить поддержку подсветки синтаксиса для указанного языка.Однако я не хочу писать отдельные файлы подсветки синтаксиса для каждого редактора (Vim, Notepad ++, Visual Studio и т. Д.).

Этот тип перевода представляется возможным, поскольку основные концепции подсветки синтаксиса, как правило, независимыкакого редактора вы используете.Я просто не знаю, существует ли такая вещь.

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Многие редакторы используют scintilla (http://www.scintilla.org/) для редактирования исходного кода и подсветки синтаксиса: например, Notepad ++ в Windows, gedit в gnome, Code :: blocks. Поэтому вы можете рассмотреть возможность добавления определения синтаксиса в ScintillaНасколько я понимаю, это вопрос написания XML-определения лексера для вашего языка (см., Например, эту страницу для Code :: Blocks)

1 голос
/ 24 января 2012

Я не знаю ничего подобного, но, по-моему, это было бы довольно легко произвести. Например, можно создать универсальный формат на основе XML (в форме схемы DTD / XSL) и использовать специфичные для редактора преобразования XSLT. Затем каждый создатель редактора (или кто-то еще) создает файл XSLT для своего редактора. И для каждого нового языка будет создан XML.

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

  • Полнота: должна содержать все возможные функции конфигурации подсветки синтаксиса.
  • Удобство использования: оно не должно быть слишком сложным для простых языков.
  • Открытость и стандартизация: это должно быть популярно, чтобы быть полезным. Чтобы быть популярным, он должен быть открытым и стандартизированным.
...