Как создать новый язык для использования в Visual Studio - PullRequest
102 голосов
/ 26 ноября 2010

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

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

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

Ответы [ 7 ]

62 голосов
/ 26 ноября 2010

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

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

29 голосов
/ 26 ноября 2010

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

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

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

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

Смотри также

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

9 голосов
/ 13 января 2011

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

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

2 голосов
/ 11 августа 2015

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

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

2 голосов
/ 15 июля 2014

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

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

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

2 голосов
/ 26 ноября 2010

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

0 голосов
/ 11 ноября 2017

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

Для VS 2015см. пример в ветке VS2015 .

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

...