Meilleur analyseur C #?

voix
6

Je besoin d'un analyseur ou de grammaire pour C # 3.0 (licence open-source). Quel est le meilleur choix aujourd'hui?

Créé 27/08/2009 à 03:52
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
3

Consultez l'analyseur de Metaspec C # :

L'analyseur Metaspec C # est entièrement conforme à la norme ECMA-334 et les normes ECMA-335. De plus, il prend en charge des extensions spécifiques à Microsoft. Pour plus d'informations sur la bibliothèque de l'analyseur C #, consultez la documentation en ligne (édition C # ou C ++ édition).

C # 3.0 fonctionnalités prises en charge:

  • nouvel algorithme d'inférence de type C # 3.0
  • typée implicitement les variables locales
  • initialiseurs d'objets
  • collection initializers
  • objet anonyme expressions de création
  • expressions lambda
  • types anonymes
  • méthodes d'extension
  • expressions de requête
  • méthodes partielles

C # 2.0 fonctionnalités prises en charge:

  • génériques
  • types nullables
  • méthodes anonymes
Créé 27/08/2009 à 03:58
source utilisateur

voix
2

Consultez le projet ANTLR. http://www.antlr.org/

Vous pouvez obtenir C # grammaire d'ici: http://www.antlr.org/grammar/list

Créé 27/08/2009 à 04:13
source utilisateur

voix
1

Je recommande au moins regarder le projet LINQOverC de # hébergé sur codeproject.com.

URL: http://www.codeplex.com/LinqOverCSharp

Il y a certains (mineur?) Les problèmes connus, et il n'a pas été mis à jour depuis janvier 2008 (qui pourrait être un assez gros problème), mais le code source pour un (rapide et 100% .Net) C # 3.0 parser est là pour la prise.

Mes choses à propos de cet analyseur favoris:

  1. Il peut charger un fichier de projet Visual Studio (csproj) à peu près hors de la boîte, et d'analyser tout le tralala (y compris les références de montage).

  2. Vous pouvez interroger, énumérer, filtre, etc., le modèle objet analysé (arbre) en utilisant LINQ. Ce qui rend presque triviale à parcourir de haut en bas et tout autour de tout ce que vous l'analyse syntaxique.

Voici un exemple de requête LINQ pour trouver une variable ou un paramètre dans une méthode où le nom de la variable = VariableName:

variable = (from v in method.Variables
                            where string.Compare(v.Name, VariableName, false) == 0
                            select v as LanguageElement).Union(
                              from p in method.FormalParameters
                              where string.Compare(p.Name, VariableName, false) == 0
                              select p as LanguageElement).FirstOrDefault();
Créé 24/09/2009 à 17:31
source utilisateur

voix
0

Cela dépend de ce que vous optimzing sur.

Si vous optimisez sur la capacité de transformer C #, voir la fin C # avant pour un analyseur qui gère C # 1.2, 2.0 et 3.0 (y compris la syntaxe LINQ). La fin C # Front construit sur DMS Software Reengineering Toolkit qui fournissent l' analyse syntaxique, la construction automatique des RSHS, le support des tables de symboles, la transformation du programme source-source en utilisant la syntaxe niveau de la source avec des motifs et AST Retour à prettyprinting texte source. Si vous cherchez à transformer le code C #, c'est l'outil pour le faire. (DMS est également utilisé pour analyser et transformer le code en Java, C, C ++, JavaScript, COBOL et bien d' autres langauges).

Si vous optimisez sur l'open source, ce n'est pas l'outil que vous voulez.

Créé 27/08/2009 à 04:21
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more