6 votes

Meilleur analyseur syntaxique pour C# ?

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

2voto

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

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

1voto

Bob Black Points 1477

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

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

Il y a quelques problèmes (mineurs ?) connus, et il n'a pas été mis à jour depuis janvier 2008 (ce qui pourrait être un problème assez important), mais le code source d'un analyseur C# 3.0 (rapide et 100% .Net) est disponible.

Ce que je préfère dans cet analyseur :

  1. Il est capable de charger un fichier de projet Visual Studio (csproj) et d'analyser l'ensemble du code (y compris les références d'assemblage).

  2. Vous pouvez interroger, énumérer, filtrer, etc., le modèle d'objet analysé (arbre) en utilisant LINQ. Ce qui rend presque trivial le fait de traverser de haut en bas et tout autour de ce que vous analysez.

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();

0voto

Ira Baxter Points 48153

Cela dépend de ce sur quoi vous optimisez.

Si vous optimisez sur la capacité à transformer le C#, voyez le C# Front End pour un analyseur qui gère C# 1.2, 2.0 et 3.0 (y compris la syntaxe LINQ). Le frontal C# est construit sur la base de Boîte à outils de réingénierie des logiciels DMS qui fournissent l'analyse syntaxique, la construction automatique d'AST, la prise en charge des tables de symboles, la transformation de programmes source à source en utilisant la syntaxe au niveau de la source avec des motifs, et l'impression du texte source à partir de l'AST. Si vous cherchez à transformer du code C#, c'est l'outil qu'il vous faut. (DMS est également utilisé pour analyser et transformer le code en Java, C, C++, JavaScript, COBOL et de nombreux autres langages).

Si vous optimisez un logiciel libre, ce n'est pas l'outil qu'il vous faut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X