Як створити нову мову для використання у Visual Studio


102

Я хочу написати нову мову шаблонів, і я хочу, щоб Visual Studio "підтримав" її. Що я повинен знати:

  1. Як розібрати свою нову мову?
    З огляду на деякий код моєї нової мови шаблонів, як я перекладу його в HTML? Зараз я використовую регулярні вирази, щоб проаналізувати його на токен, але я не думаю, що це стане дуже масштабним, оскільки мова ускладнюється, і перевірки помилок немає. Я чув про ANTLR, але ніколи не використовував його. Це був би правильний інструмент для цієї роботи, чи, можливо, є щось простіше? В ідеалі я хотів би надіслати будь-які синтаксичні помилки у вікно помилки з якомога більше інформації (рядок №, тип помилки), як це роблять інші мови.
  2. Як створити новий тип файлу для Visual Studio?
  3. Як отримати підсвічування синтаксису?
    Чи можу я використовувати той же аналізатор, який я створив на кроці 1, чи це щось зовсім інше?
  4. Як отримати інтеллісенс?

Я вважаю за краще написати свій аналізатор на C #.

Відповіді:


62

Я хотів би поглянути на іншу мову, яка вже зробила роботу інтеграції з Visual Studio. Прекрасний приклад - Бу. Мова та інтеграція Visual Studio є відкритим кодом. Тож ви можете подивитися, що саме вони мали зробити.

Виділення синтаксису Boo для VS2010 містить на своїй домашній сторінці кілька рекомендованих посилань, які я скопіюю для легкої довідки:


29

Що стосується аспектів Visual Studio, то вам потрібна "мовна послуга", яка є об'єктом, який обробляє колоризацію, інтелігенцію тощо для даного розширення / типу файлів.

Для вступу дивіться цю статтю.
А про зразок коду див. Тут

Що стосується розбору, то тут є безліч технологій, і я не пропоную думку / поради.

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

Дивитися також

Visual Studio 2010 Розширюваність, MPF та мовні послуги


9

Я написав мовну службу VS, використовуючи цю статтю як основу: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

Це було не надто погано, якщо у вас є основна ручка на граматиках.


Прикро, що він не продовжив цей підручник ... це було справді добре. Дякую!
mpen

1
Все, чого насправді не вистачає, це наступний крок, установка пакету. stackoverflow.com/questions/4160391 / ...
ColinCren

2

У SDS SDK є зразок, який показує більшість функцій, які ви шукаєте.


2

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

Я знаю, що підручник у VS2010. Я зробив своє в VS2012 без жодної або дуже маленької гикавки. (також працював у VS2013) Нещодавно я змінив на VS2015, і рішення можна редагувати, будувати без проблем.


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 році він називається "Інструменти розширення Visual Studio Update 3".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.