Bester Parser für C #?

stimmen
6

Ich brauche einen Parser oder Grammatik für C # 3.0 (Open-Source-Lizenz). Was ist die beste Wahl für heute?

Veröffentlicht am 27/08/2009 um 03:52
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
3

Schauen Sie sich Metaspec der C # Parser :

Der Metaspec C # Parser sind vollständig kompatibel mit ECMA-334 und ECMA-335-Standards. Darüber hinaus unterstützt es Microsoft-spezifische Erweiterungen. Weitere Einzelheiten zu der Parser-Bibliothek C # finden Sie in der Online-Dokumentation (C # Ausgabe oder C ++ Ausgabe).

C # 3.0 unterstützte Funktionen:

  • neu C # 3.0 Typ Inferenzalgorithmus
  • typisierte implizit lokale Variablen
  • Objektinitialisierer
  • Auflistungsinitialisierer
  • anonyme Objekterstellung Ausdrücke
  • Lambda-Ausdrücke
  • anonyme Typen
  • Erweiterungsmethoden
  • Abfrageausdrücke
  • Teilverfahren

C # 2.0 unterstützte Funktionen:

  • Generika
  • Nullable Types
  • anonyme Methoden
Beantwortet am 27/08/2009 um 03:58
quelle vom benutzer

stimmen
2

Überprüfen Sie die ANTLR Projekt aus. http://www.antlr.org/

Sie können C # Grammatik von hier: http://www.antlr.org/grammar/list

Beantwortet am 27/08/2009 um 04:13
quelle vom benutzer

stimmen
0

Hängt davon ab, was Sie optimzing auf.

Wenn Sie auf der Fähigkeit optimieren C # zu verwandeln, finden Sie in der C # Front End für einen Parser, der C # 1.2, 2.0 und 3.0 (einschließlich LINQ - Syntax) behandelt. Die C # Front End ist auf der Oberseite der eingebaute DMS Software Reengineering Toolkit , die automatischen Bau von Ast, Unterstützung für Symboltabellen bietet Parsen Source-to-Source - Transformationsprogramm mit Source-Level - Syntax mit Mustern und AST zurück zum Ausgangstext pretty. Wenn Sie schauen , C # -Code zu verwandeln, das ist das Werkzeug , um es zu tun. (DMS ist auch zu analysieren und zu transformieren Code in Java, C, C ++, JavaScript, COBOL und vielen anderen langauges verwendet).

Wenn Sie auf Open Source optimieren, ist dies nicht das Werkzeug, das Sie wollen.

Beantwortet am 27/08/2009 um 04:21
quelle vom benutzer

stimmen
1

Ich empfehle mindestens Blick auf die LINQOverC # -Projekt auf codeproject.com gehostet.

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

Es gibt einige (kleinere?) Bekannte Probleme und es ist seit Januar 2008 nicht mehr aktualisiert (das ist ein ziemlich großes Problem sein könnte), aber der Quellcode für eine (schnelle und 100% .NET) C # 3.0 - Parser ist es für die Aufnahme.

Meine Lieblings-Dinge über diesen Parser:

  1. Es kann eine Visual Studio-Projektdatei (csproj) so ziemlich aus der Box laden, und analysiert den gesamten Shebang (einschließlich Montage Referenzen).

  2. Sie können abfragen, aufzuzählen, Filter, etc, das analysiert Objektmodell (Baum) mit LINQ. Was macht es fast trivial zu durchqueren nach oben und unten und ganz um, was auch immer Sie das Parsen.

Hier ist ein Beispiel LINQ-Abfrage für eine Variable oder Parameter in einer Methode zu finden, wo der Variablennamen = Variablenname:

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();
Beantwortet am 24/09/2009 um 17:31
quelle vom benutzer

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