Как создать новый язык для использования в Visual Studio
Я хочу написать новый язык шаблонов и хочу, чтобы Visual Studio "поддерживала" его. Что мне нужно знать, это:
- Как мне разобрать мой новый язык?
Учитывая некоторый код на моем новом языке шаблонов, как я могу перевести его в HTML? Прямо сейчас я использую регулярные выражения для разбора токена по токену, но я не думаю, что это будет очень хорошо масштабироваться, так как язык усложняется, и нет проверки ошибок. Я слышал о ANTLR, но никогда не использовал его. Будет ли это правильный инструмент для этой работы, или есть что-то более простое? В идеале я хотел бы отправлять любые синтаксические ошибки в окно ошибок с как можно большим количеством информации (строка #, тип ошибки), как это делают другие языки. - Как создать новый тип файла для Visual Studio?
- Как получить подсветку синтаксиса?
Могу ли я использовать тот же парсер, который я создал на шаге 1, или это что-то совершенно другое? - Как получить Intellisense?
Я бы предпочел написать свой парсер на C#.
7 ответов
Я хотел бы взглянуть на другой язык, который уже сделал всю работу по интеграции с Visual Studio. Отличным примером является Бу. Язык и интеграция Visual Studio с открытым исходным кодом. Таким образом, вы можете взглянуть на то, что они должны были сделать.
- Язык Boo: https://github.com/boo/boo-lang
- Подсветка синтаксиса Boo для VS2010 (надстройка VSX): http://vs2010boo.codeplex.com/
- Boo Language Studio (подсветка синтаксиса для VS2008): http://boolangstudio.codeplex.com/
Подсветка синтаксиса Boo для VS2010 включает некоторые рекомендуемые ссылки на своей домашней странице, которые я скопирую для удобства использования:
- Хорошая статья о "классификации" (подсветка синтаксиса) в VS 2010: http://dotneteers.net/blogs/divedeeper/archive/2008/11/04/LearnVSXNowPart38.aspx
- Примеры надстроек VSX: http://blogs.msdn.com/vsxteam/archive/2009/06/17/new-editor-samples-for-visual-studio-2010-beta-1.aspx
Что касается аспектов Visual Studio, то вам нужна "языковая служба", которая является сущностью, которая обрабатывает цвет, интеллигентность и т. Д. Для данного расширения / типа файла.
Для ознакомления смотрите эту статью
И пример кода смотрите здесь
Что касается синтаксического анализа, есть много технологий, и я не буду предлагать мнение / совет.
Осторожно, здесь проделано немалое количество работы, хотя, на мой взгляд, в VS2010 гораздо проще, чем в предыдущих версиях Visual Studio, предоставить такое расширение.
Смотрите также
Я написал VS Language Service, используя эту статью в качестве основы: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx
Это было не так уж плохо, если у вас есть базовая ручка для грамматики.
В VS SDK есть образец, который показывает большинство функций, которые вы ищете.
Я нашел эту очень полезную коллекцию последних примеров для Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx
Он также содержит последнюю версию OokLanguage, которая звучит многообещающе.
Мы использовали ANTLR 4 для анализа нашего языка, который работает как шарм и позволяет напрямую взаимодействовать с кодом C#. Могу полностью рекомендовать это.
Я использовал VS с собственным языком и отчаянно нуждался в подсветке синтаксиса. Я построил мой на основе этого учебника: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/
Я знаю, что учебник в VS2010. Я сделал мой в VS2012 без каких-либо или очень небольших икоты. (также работал в VS2013) Недавно я перешел на VS2015, и решение может быть отредактировано, построено без проблем.
Как упоминалось в других ответах, наиболее интересным примером кода является расширение языка Ook для последней версии Visual Studio (2017 на момент написания).
Для VS 2015 см. Образец в ветке VS2015.
Чтобы установить SDK на 2015 год или более позднюю, необходимо повторно запустить установку VS. В 2015 году он называется "Обновление средств расширения Visual Studio 3".