Как создать новый язык для использования в Visual Studio

Я хочу написать новый язык шаблонов, и я хочу, чтобы Visual Studio "поддерживала" его. Мне нужно знать:

  • Как разобрать мой новый язык?
    Учитывая некоторый код на моем новом языке шаблонов, как мне перевести его в HTML? Прямо сейчас я использую регулярные выражения для синтаксического анализа этого токена с помощью токена, но я не думаю, что это будет очень хорошо масштабироваться, поскольку язык становится более сложным, и проверки ошибок не происходит. Я слышал об ANTLR, но никогда не использовал его. Будет ли это подходящим инструментом для этой работы или может быть что-то проще? В идеале я бы хотел отправить любые ошибки синтаксиса в окно ошибки с максимально возможной информацией (строка #, тип ошибки), как это делают другие языки.
  • Как создать новый тип файла для Visual Studio?
  • Как получить подсветку синтаксиса?
    Могу ли я использовать тот же парсер, который я создал на шаге 1, или это совсем другое?
  • Как получить Intellisense?

Я бы предпочел написать мой синтаксический анализатор на С#.

Ответ 1

Я бы посмотрел на другой язык, который уже сделал работу по интеграции с Visual Studio. Отличным примером является Boo. Интеграция языка и Visual Studio является открытым исходным кодом. Поэтому вы можете посмотреть, что именно они должны были сделать.

Подсветка синтаксиса Boo для VS2010 включает некоторые рекомендуемые ссылки на главной странице, которые я скопирую для удобства:

Ответ 2

Что касается аспектов Visual Studio, вам нужна "служба языка", которая является объектом, который обрабатывает раскраску, intellisense и т.д. для данного расширения/типа файла.

Для вступления, см. эту статью
И для примера кода см. Здесь

Что касается разбора, есть много технологий, и я не буду предлагать мнения/советы.

Остерегайтесь, есть много работы, хотя, на мой взгляд, это намного проще в VS2010, чем в предыдущих версиях Visual Studio для обеспечения такого расширения.

См. также

Расширяемость Visual Studio 2010, MPF и языковые службы

Ответ 3

Я написал VS Language Service, используя эту статью в качестве основы: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

Это было не так уж плохо, если у вас есть базовый дескриптор на грамматике.

Ответ 4

В VS SDK есть образец, который показывает большинство функций, которые вы ищете.

Ответ 5

Я нашел эту очень полезную коллекцию последних образцов для SDK для Visual Studio 2013: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

В нем также содержится последняя версия OokLanguage, которая кажется многообещающей.

Мы использовали ANTLR 4 для анализа нашего языка, который работает как шарм и позволяет прямое взаимодействие с кодом С#. Можно полностью рекомендовать его.

Ответ 6

Я использовал VS с собственным языком и отчаянно нуждался в синтаксисе . Я построил шахту на основе этого урока: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

Я знаю, что учебное пособие находится в VS2010. Я сделал мой в VS2012 без каких-либо или очень маленьких икота. (также работал в VS2013) Недавно я перешел на VS2015, и решение можно редактировать, без проблем.

Ответ 7

Как упоминалось в других ответах, наиболее интересным примером кода является Расширение языка Ook для последней версии Visual Studio (2017 г. на время написания).

В VS 2015 см. образец в ветке VS2015.

Чтобы установить SDK на 2015 год или позже, вам нужно повторно запустить настройку VS. В 2015 году он называется "Обновление инструментов расширения расширяемости Visual Studio 3".