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

102

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

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

Я бы предпочел написать свой парсер на C #.

mpen
источник

Ответы:

62

Я хотел бы взглянуть на другой язык, который уже проделал работу по интеграции с Visual Studio. Отличный пример - Бу. Язык и интеграция Visual Studio имеют открытый исходный код. Так что вы можете посмотреть, что именно им пришлось делать.

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

Джеймс Ковач
источник
29

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

Для вступления см. Эту статью,
а образец кода см. Здесь.

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

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

Смотрите также

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

Брайан
источник
9

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

Было бы неплохо, если бы у вас были базовые знания грамматики.

ColinCren
источник
Жаль, что он не продолжил этот урок ... он был действительно хорошим. Спасибо!
mpen
1
Все, что ему действительно не хватает, - это следующий шаг - установка пакета. stackoverflow.com/questions/4160391/…
ColinCren
2

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

леппи
источник
2

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

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

DDan
источник
2

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

Он также содержит последнюю версию OokLanguage, которая звучит многообещающе.

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

Александр Паша
источник
0

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

Для VS 2015 см. Образец в ветке VS2015 .

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

Андреас Хафербург
источник