J'ai besoin d'un analyseur ou d'une grammaire pour C # 3.0 (licence Open-Source). Quel est le meilleur choix aujourd'hui? P>
4 Réponses :
Vérifiez Parser C # de Metaspec : P>
L'analyseur METASPEC C # est complètement Conforme avec ECMA-334 et ECMA-335 normes. De plus, il soutient Extensions spécifiques à Microsoft. Pour Détails sur la bibliothèque de parser C #, Voir la documentation en ligne (C # édition ou édition C ++). P>
C # 3.0 Caractéristiques prises en charge: p>
- Algorithme d'inférence de type C # 3.0 de type C # 3.0 LI>
- variables locales typées implicitement li>
- Initializers d'objets li>
- Initializers de collection li>
- Expressions de création d'objets anonymes li>
- Lambda Expressions Li>
- Types anonymes Li>
- Méthodes d'extension Li>
- Expressions de requête li>
- Méthodes partielles Li> ul>
C # 2.0 Caractéristiques prises en charge: P>
- GENRES LI>
- Nullable Types Li>
- Méthodes anonymes Li> ul> blockQuote>
Je ne suis pas sûr - vous auriez besoin de contacter Metaspec pour une copie de leur licence.
Découvrez le projet ANTLR. http://www.antlr.org/ p>
Vous pouvez obtenir C # grammaire d'ici: http://www.antlr.org/grammar/list p>
dépend de ce que vous optimez. P>
Si vous optimisez la capacité de transformer C #, Voir le C # Front End pour un analyseur qui gère C # 1.2, 2.0 et 3.0 (y compris la syntaxe LINQ). L'extrémité frontale C # est construite sur Toolkit de réengagement logiciel DMS qui fournit l'analyse , Bâtiment automatique des asts, prise en charge des tables de symboles, transformation du programme source-à-source à l'aide de la syntaxe de niveau source avec des motifs et de l'AST Retour au texte source Prettyprinting. Si vous souhaitez transformer le code C #, c'est l'outil pour le faire. (DMS est également utilisé pour analyser et transformer le code dans Java, C, C ++, JavaScript, Cobol et de nombreux autres langueurs). p>
Si vous optimisez sur Open Source, ce n'est pas l'outil souhaité. P>
Je recommande au moins de regarder le projet Linqoverc # hébergé sur codeProject.com.
URL: http: //www.codeplex.com/linqovercshaarp p>
Il y a des problèmes connus (mineurs?), et celui-ci n'a pas été mis à jour depuis Jan 2008 EM> (qui pourrait Soyez un très gros problème), mais le code source d'un analyseur (rapide et 100% .NET) C # 3.0 est là pour la prise. P>
Mes choses préférées à propos de cet analyseur: P> < ol>
Il peut charger un fichier de projet Visual Studio (CSPROJ) à peu près hors de la boîte et analyser l'ensemble du shebang (y compris les références d'assemblage). P> LI>
Vous pouvez interroger, énumérer, filtrer, etc., le modèle d'objet analysé (arbre) à l'aide de LINQ. Que cela rend presque trivial de traverser de haut en bas et de tout autour de ce que vous analysez. P> li> ol>
Voici un exemple de requête LINQ pour rechercher une variable ou un paramètre dans une méthode, où la nom de variable = variablename: p>
Juste curieux .. pourquoi voudriez-vous un?
Expérimenter avec des transformations de code.
Si vous utilisez Visual Studio SDK, vous pouvez obtenir un modèle d'objet de document complet du projet C # pour effectuer de telles transformations. Vs l'utilise déjà pour réfracter et intellisense et beaucoup d'addins utilisent aussi.