| 

.NET C# Java Javascript Exception

6
Hallo,

Private Function myFunction(myName As String) As String
Dim ReturnValue As String
ReturnValue = "Hallo " & myName
Return ReturnValue
End Function


gibt es eine Möglichkeit, obigen Beispielcode so zu parsen, dass ich sowohl die einzelnen Tokens als auch eine Aussage über deren Typ (String, Variable, Funktion...) erhalte?

Und zwar möglichst mit .NET-Boardmitteln?

Yacc, Bison und Co möchte ich nicht verwenden, weil mir das zu hoch ist.

Vielleicht gibt's ja was .NETteres? :-)

Mit Dank im voraus hoffend ... Peter
22.01.2014
PeterT 91 5
4 Antworten
2
Microsoft arbeitet an einer neuen Compiler-Engine, welche deine Anforderungen erfüllt. Es gibt bereits eine CTP zum Download. Der Compiler soll in einer der nächsten Visual Studio Versionen Standard werden. Nähere Infos findest du hier:

Roslyn Project Overview
23.01.2014
luedi 2,2k 1 9
2
mono cecil könnte das sein was du suchst.
23.01.2014
Floyd 14,6k 3 9
1
@luedis Vorschlag ist das .NET Bordmittel, das nur noch nicht final released ist. Ich würde es auf alle Fälle als erste Option in Betracht ziehen.

Cecil ist eher auf IL Ebene und unterstützt auch die Modifikation des IL Codes. Sicher einen Blick wert.

Für einzeilige Lambda-Ausdrücke kannst Du Dir ExpressionTrees ansehen, allerdings können weder der C# noch der VB Compiler Statement Lambdas in ExpressionTrees übersetzen (leider).

NRefactory ist sicher auch einen Blick wert. Basiert auf Cecil und bietet z.B. auch semantische Analyse.

Antlr geht wohl eher in die Richtung, die Du nicht anstrebst.
23.01.2014
ffordermaier 8,4k 3 9
@luedi, Floyd & ffordermaier,

vielen Dank für Eure Antworten! Sind einige nette Sachen dabei. Ich werde mal versuchen, mich da durchzuwühlen.

Danke & Grüße ... Peter
PeterT 27.01.2014
0
Ich bin zwar kein VB.net Programmierer, aber gibt es in VB keine Reflection, wo man mittels der (Object-Methode GetType()) einen Typen bekommt, wo man Felder, Properties, Methoden, Interfaces und noch vieles mehr abfragen kann? Ist zwar nicht das Permanenteste was C# zu bieten hat, aber funktionieren tut es gut, wenn man gewisse Sachen über einen Typen herausfinden muss.

Edit: Ich seh gerade auf dem Link zur Methode, dass da auch Beispiele für VB sind, also gibt es das auch in VB.
30.01.2014
Stelzi79 44 1
Es geht um das Parsen des Codes (des Textes), nicht um das Analysieren von bereits kompiliertem Code.
Roland Bär 30.01.2014
"... als auch eine Aussage über deren Typ (String, Variable, Funktion...) erhalte?" Um solche Sachen (auch private Methoden) über Code herauszufinden kannst du jetzt den Code durch den C#-Compiler jagen und dann anschließend die Assembly einbinden und die gewünschten Sachen mit Reflection abfragen. Beim neuen kommenden Roslyn-Compiler kannst halt beim Kompilieren zuschauen und dann eventuell auch den kompilierten Code verändern.
Stelzi79 30.01.2014

Stelle deine Token-Frage jetzt!