Jak utworzyć nowy język do użytku w programie Visual Studio

102

Chcę napisać nowy język szablonów i chcę, aby program Visual Studio go „obsługiwał”. Muszę wiedzieć:

  1. Jak przeanalizować nowy język?
    Biorąc pod uwagę kod w moim nowym języku szablonów, jak przetłumaczyć go na HTML? W tej chwili używam wyrażeń regularnych do analizowania tego tokenu po tokenie, ale nie sądzę, żeby to się skalowało zbyt dobrze, ponieważ język staje się bardziej skomplikowany i nie ma sprawdzania błędów. Słyszałem o ANTLR, ale nigdy go nie używałem. Czy byłoby to właściwe narzędzie do tej pracy, czy może jest coś prostszego? Najlepiej byłoby, gdyby wszelkie błędy składni były wysyłane do okna błędu z możliwie największą ilością informacji (numer linii, typ błędu), tak jak robią to inne języki.
  2. Jak utworzyć nowy typ pliku dla programu Visual Studio?
  3. Jak uzyskać podświetlanie składni?
    Czy mogę użyć tego samego parsera, który utworzyłem w kroku 1, czy jest to coś zupełnie innego?
  4. Jak uzyskać Intellisense?

Wolę pisać mój parser w C #.

mpen
źródło

Odpowiedzi:

62

Przyjrzałbym się innemu językowi, który wykonał już część pracy związanej z integracją z Visual Studio. Świetnym przykładem jest Boo. Język i integracja z programem Visual Studio to oprogramowanie typu open source. Możesz więc przyjrzeć się dokładnie, co musieli zrobić.

Podświetlanie składni Boo dla VS2010 zawiera kilka zalecanych linków na jego stronie głównej, które skopiuję dla ułatwienia:

James Kovacs
źródło
29

Jeśli chodzi o aspekty Visual Studio, potrzebna jest „usługa językowa”, czyli jednostka obsługująca kolorowanie, inteligencję itp. Dla danego rozszerzenia / typu pliku.

Aby zapoznać się z wprowadzeniem, zobacz ten artykuł,
a przykładowy kod znajdziesz tutaj

Jeśli chodzi o parsowanie, istnieje wiele technologii i nie będę przedstawiać opinii ani porad.

Uważaj, wymaga to sporo pracy, chociaż moim zdaniem w VS2010 jest znacznie łatwiej niż w poprzednich wersjach Visual Studio, aby zapewnić tego rodzaju rozszerzenie.

Zobacz też

Visual Studio 2010 Extensibility, MPF i usługi językowe

Brian
źródło
2

W VS SDK znajduje się próbka, która przedstawia większość funkcji, których szukasz.

leppie
źródło
2

Znalazłem tę bardzo przydatną kolekcję najnowszych przykładów dla Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

Zawiera również najnowszą wersję języka OokLanguage, która brzmi obiecująco.

Użyliśmy ANTLR 4 do analizy naszego języka, który działa jak urok i umożliwia bezpośrednią interakcję z kodem C #. Całkowicie polecam.

Alexander Pacha
źródło
0

Jak wspomniano w innych odpowiedziach, najciekawszym przykładem kodu jest rozszerzenie języka Ook dla najnowszej wersji programu Visual Studio (2017 w momencie pisania).

W przypadku VS 2015 zobacz przykład w gałęzi VS2015 .

Aby zainstalować pakiet SDK dla wersji 2015 lub nowszej, musisz ponownie uruchomić konfigurację VS. W 2015 r. Nosi nazwę „Visual Studio Extensibility Tools Update 3”.

Andreas Haferburg
źródło