Comment créer un nouveau langage à utiliser dans Visual Studio

102

Je souhaite écrire un nouveau langage de création de modèles et je souhaite que Visual Studio le «supporte». Ce que j'ai besoin de savoir, c'est:

  1. Comment analyser ma nouvelle langue?
    Compte tenu du code dans mon nouveau langage de modèle, comment le traduire en HTML? À l'heure actuelle, j'utilise des expressions régulières pour l'analyser jeton par jeton, mais je ne pense pas que cela va très bien évoluer à mesure que le langage se complique et qu'il n'y a pas de vérification d'erreur. J'ai entendu parler d'ANTLR mais je ne l'ai jamais utilisé. Serait-ce le bon outil pour ce travail, ou y a-t-il peut-être quelque chose de plus simple? Idéalement, j'aimerais envoyer toutes les erreurs de syntaxe à la fenêtre d'erreur avec autant d'informations que possible (ligne #, type d'erreur) comme le font les autres langues.
  2. Comment créer un nouveau type de fichier pour Visual Studio?
  3. Comment obtenir la coloration syntaxique?
    Puis-je utiliser le même analyseur que j'ai créé à l'étape 1, ou est-ce quelque chose de complètement différent?
  4. Comment obtenir Intellisense?

Je préférerais écrire mon analyseur en C #.

mpen
la source

Réponses:

62

Je voudrais jeter un oeil à un autre langage qui a déjà fait les démarches d'intégration avec Visual Studio. Un bon exemple est Boo. Le langage et l'intégration de Visual Studio sont open source. Vous pouvez donc voir exactement ce qu'ils devaient faire.

La mise en évidence de la syntaxe Boo pour VS2010 comprend des liens recommandés sur sa page d'accueil, que je vais copier pour une référence facile:

James Kovacs
la source
29

En ce qui concerne les aspects de Visual Studio, vous avez besoin d'un "service de langage", qui est l'entité qui gère la colorisation, l'intellisense, etc. pour une extension / un type de fichier donné.

Pour une introduction, voir cet article
Et pour un exemple de code, voir ici

En ce qui concerne l'analyse, il y a beaucoup de technologies, et je ne donnerai pas d'avis / conseil.

Attention, il y a pas mal de travail à faire, bien qu'à mon avis, il soit beaucoup plus simple dans VS2010 que dans les versions précédentes de Visual Studio de fournir ce type d'extension.

Voir également

Extensibilité de Visual Studio 2010, MPF et services linguistiques

Brian
la source
2

Il existe un exemple dans le SDK VS qui montre la plupart des fonctionnalités que vous recherchez.

leppie
la source
2

J'utilisais VS avec mon propre langage et j'avais désespérément besoin d'un accent sur la syntaxe . J'ai construit le mien sur la base de ce tutoriel: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

Je sais que le tutoriel est dans VS2010. J'ai fait le mien en VS2012 avec aucun ou très petit hoquet. (a également travaillé dans VS2013) Récemment, j'ai changé pour VS2015 et la solution peut être modifiée, construite sans problème.

DDan
la source
2

J'ai trouvé cette collection très utile d'exemples récents pour le SDK Visual Studio 2013: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

Il contient également la version récente du OokLanguage qui semble prometteuse.

Nous avons utilisé ANTLR 4 pour analyser notre langage qui fonctionne comme un charme et permet une interaction directe avec le code C #. Je peux totalement le recommander.

Alexandre Pacha
la source
0

Comme mentionné dans d'autres réponses, l'exemple de code le plus intéressant est l' extension de langage Ook pour la dernière version de Visual Studio (2017 au moment de la rédaction).

Pour VS 2015, consultez l' exemple dans la branche VS2015 .

Pour installer le SDK pour 2015 ou une version ultérieure, vous devez réexécuter l'installation de VS. En 2015, il s'appelle "Visual Studio Extensibility Tools Update 3".

Andreas Haferburg
la source