Инструмент синтаксиса Highlighting/язык, который работает с несколькими редакторами

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

(Старый вопрос/ответы, но здесь вы идете) Похоже, стоит проверить Iro, "инструмент разработки, предназначенный для упрощения создания подсветки синтаксиса на многих платформах" - https://eeyo.io/iro/documentation/. Я нашел это в этой публикации: "Введение в Iro - более простой способ создания подсветки синтаксиса" - https://medium.com/@model_train/creating-universal-syntax-highlighters-with-iro-549501698fd2