web-dev-qa-db-fra.com

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

Je veux écrire un nouveau langage de création de modèles et je veux que Visual Studio le "prenne en charge". Ce que je dois 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? En ce moment, j'utilise des expressions régulières pour l'analyser jeton par jeton, mais je ne pense pas que cela évoluera très bien car le langage devient plus compliqué et 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ère écrire mon analyseur en C #.

102
mpen

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 copierai pour référence:

62
James Kovacs

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

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

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

Attention, il y a beaucoup de travail impliqué, même si à mon avis, il est beaucoup plus simple dans VS2010 que dans les versions précédentes de Visual Studio de fournir ce type d'extension.

Voir également

Extensibilité Visual Studio 2010, MPF et services linguistiques

29
Brian

J'ai écrit un service linguistique VS en utilisant cet article comme base: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

Ce n'était pas trop mal si vous avez une poignée de base sur les grammaires.

9
ColinCren

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

2
leppie

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 de l'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.

2
Alexander Pacha

J'utilisais VS avec sa propre langue et j'avais désespérément besoin d'une coloration syntaxique . 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 en VS2010. J'ai fait le mien dans VS2012 avec aucun ou très petit hoquet. (également travaillé dans VS2013) Récemment, j'ai changé pour VS2015 et la solution peut être éditée, construite sans problème.

2
DDan

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

Pour VS 2015, voir le exemple dans la branche VS2015 .

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

0
Andreas Haferburg