2010-09-26 15 views

Répondre

1

Ceci est une tâche extrêmement complexe car les langages de programmation ont une grammaire complexe. Si vous voulez formater non seulement C#, mais aussi C et C++, c'est même plus complexe - probablement impossible car il peut y avoir une syntaxe dans une langue qui n'est pas valide (ou signifie quelque chose de différent) dans un autre.

Si vous voulez le faire uniquement pour C#, vous avez besoin d'un analyseur C#. Il y a quelques parseurs sans logiciel C# disponible:

Une fois que vous avez l'arbre d'analyse syntaxique, vous devrez marcher l'arbre et progressivement sortie correctement formaté. Certains des analyseurs C# peuvent déjà avoir cette fonctionnalité.

En ce qui concerne l'ambiguïté de la grammaire: Tenir compte de la ligne de code suivante:

Method(a<b,c>(d+1)); 

En C# la mise en forme correcte serait:

Method(a<b, c>(d + 1)); // “a<T1, T2>” is generic; Method has one argument 

en C et C++ je crois que la mise en forme correcte serait:

Method(a < b, c > (d + 1)); // Method has two arguments with binary operators 
+0

Je comprends la complexité. Je n'ai aucun problème à utiliser une autre ressource gratuite. J'ai ce lien http://www.codeproject.com/KB/macros/makecodenicer.aspx où la macro est disponible. Mais je ne sais rien à ce sujet. –

+0

@Shantanu: Quelle est votre question? – Timwi

+0

ceci est marqué 'devoirs'. OP est chargé de recréer la fonction "Format Selected Code" de VS pour C# afai peut dire. –