2009-07-29 8 views
1

Je dois faire un programme qui peut faire la mise en évidence de la syntaxe et la saisie semi-automatique déroulante similaire à Visual Studio. Id aime aussi pouvoir réduire et développer des segments de code si possible.Meilleure façon de coder Visual Studio comme application de code

J'ai essayé de coder ceci avant d'utiliser l'éditeur de texte enrichi et d'utiliser des expressions reg pour appliquer la coloration. Cela a été très intensif pour le processeur et a causé du retard avec des fichiers plus volumineux. Alors j'ai pensé que peut-être que j'allais à ce sujet tout à fait tort.

Alors ma question est

Si vous deviez coder un studio visuel comme programme VB.net ou C#. Comment allez-vous le faire?

+0

Ce n'est pas * un * projet de fin de semaine. :) –

Répondre

7

Presque tous les outils qui fonctionnent sur le code source (par exemple un éditeur IDE, un compilateur), ne traitent pas le code comme un texte analysé via les expressions rationnelles, car cette approche ne fonctionne tout simplement pas dans un monde réel échelle. Ces outils fonctionnent sur un modèle du code source connu sous le nom d'arbre de syntaxe abstraite (AST), qui modélise le code en tant que structure arborescente. Dans un programme écrit dans une langue telle que C le noeud racine de cette arborescence est la méthode principale où l'exécution commence, les enfants de cette racine sont les arguments passés à la méthode principale, etc.

Lorsque les opérations sont effectuées sur le code, (par exemple syntaxe de surbrillance, refactor), ils sont exécutés sur l'arbre en utilisant quelque chose comme un modèle de visiteur et les fichiers sources sont synchronisés avec l'AST. Lorsque le code est mis à jour, il est analysé en jetons à l'aide d'un lexeur, qui est ensuite analysé à l'aide d'un analyseur, et si les règles de grammaire du langage sont respectées, l'AST est mis à jour. Pour en savoir plus sur les parsers, les lexers, les grammaires et les ASTs, je suggère de vérifier ANTLR.

+0

+1 pour la vérité. En outre, si le questionneur n'est pas familier avec * tout * des concepts discutés dans cette réponse, ils devraient envisager de prendre un livre de compilation. Peut-être le livre du Dragon ou quelque chose de similaire. –

1

Je construis un plug-in ou dsl pour Visual Studio lui-même. Ou si la licence/coût était un problème j'utiliserais Notepad ++. Pourquoi réinventer la roue?

+0

Eh bien, j'ai besoin de fonctionnalités personnalisées pour cette application. Nous utilisons actuellement Textpad et un tas d'autres outils de ligne de commande pour le tri des données, ect. Je veux juste une roue plus personnalisée. –

+0

Qu'est-ce qui vous empêcherait d'ajouter cette fonctionnalité dans Visual Studio? –

1

Avez-vous envisagé d'utiliser un composant de coloration syntaxique tel que Actipro's SyntaxHighlighter?

+0

Je n'ai pas beaucoup d'argent à faire pour ce projet actuellement. Bien que je sois intéressé par un gratuit, vous pourriez être au courant. –

1

Si vous voulez aller sur la route de service linguistique Visual Studio, Framework Managed Package est un bon endroit pour commencer: http://msdn.microsoft.com/en-us/library/bb166360.aspx

Il est livré avec le kit de développement Visual Studio. Je crois qu'il existe un exemple basé sur Regex, mais je ne suis pas sûr à 100%. Gardez à l'esprit que le shell Visual Studio est librement redistribuable, il peut s'agir de beaucoup de frais généraux pour vos besoins.

0

I Visual Studio étendent pour soutenir les langues dont j'ai besoin. J'ai un blog qui parle de certaines techniques (en particulier en utilisant ANTLR pour les services d'analyse) (link).

Langues J'ai pris en charge:

  • UnrealScript (mise en évidence de la syntaxe, presque toutes les opérations IntelliSense pris en charge par Visual Studio)
  • ANTLR grammars (syntaxe de mise en surbrillance, IntelliSense de base)
  • StringTemplate langage fonctionnel templating (syntaxe surlignage, base IntelliSense)
  • Chapelle (coloration syntaxique)

Endroits à visiter:

Questions connexes