Laden...

c# Script analysieren

Erstellt von Captain-Party vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.776 Views
C
Captain-Party Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren
c# Script analysieren

Hi, vielleicht weiß hier ja jemand mehr bzw. kann mir helfen, ich komme einfach nicht weiter.

ich schreibe gerade eine Klasse mit der es möglich sein soll c# als script auszuführen, das läuft soweit auch alles! Mein Problem ist jetzt das ich das Script analysieren muss, sprich ich muss herausfinden welche Methoden in diesem Script aufgerufen werden.

Das Script soll so oder so ähnlich aussehen:


assemblies.Add("TestAssembly.dll"); 

TestAssembly.TestClass test1 = new TestAssembly.TestClass();
test1.Square(16);

Diese


assemblies.Add("TestAssembly.dll"); 

Zeile wird von mir ausgelesen und dient nur dazu die zusätzlich erforderlichen Assemblies dem Compiler (CSharpCodeProvider) zu übergeben. Mein Problem ist jetzt wie bekomm ich heraus das


test1.Square(16);

aufgerufen wird?

CSharpCodeProvider.Parse geht ja leider nicht, da bekommt man nur einen Fehler:
Dieser CodeDomProvider unterstützt die Methode nicht oder so ähnlich.

Bin für jeden Hinweis dankbar

0
767 Beiträge seit 2005
vor 16 Jahren

Schau dir mal das an, vieleicht brauchst du das Rad dann nicht neu erfinden: C# Script

loop:
btst #6,$bfe001
bne.s loop
rts

C
Captain-Party Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

Schonmal vielen dank für die Antwort.

Ich habs mir mal angeschaut aber wirklich durchblicken tue ich da (noch) nicht! Es muss doch eine Möglichkeit geben C# zu parsen und Methoden zu erkennen die aufgerufen werden!?

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Captain-Party,

möglich ist das schon, aber MS hat nunmal CSharpCodeProvider.Parse nicht implementiert.

Du kannst natürlich mit Code-Dom deinen Code erst übersetzen und dann die erzeuge Assembly mit Reflection analysieren.

herbivore

C
Captain-Party Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

Hi herbivore ,

hatte ich auch schon dran gedacht bzw. ich hab nen bischen rumprobiert.
Das Problem ist das ich die Rückgabewerte jeder Methode die im Script Aufgerufen wird benötige.

ohne das im Script selbst sowas steht wie


List<object> returnValues = new List<object>();

TestAssembly.TestClass test1 = new TestAssembly.TestClass();
returnValues.Add(test1.Square(16));

return returnValues;

Diesen Code will ich mir vor dem compilieren der Assembly selbst generieren.

wenn ich also Das Script in eine Assembly compiliereund diese dann analysiere müsste ich wieder code generieren und noch eine Assembly compelieren. Das erscheint mir etwas umständlich!

Probiere jetzt den Code/das Script selbst zu parsen, wie ich das machen soll weiß ich allerdings selbst noch nicht genau X(

Hättest du (jeder andere natürlich auch) vieleicht einen Ansatz oder Hinweis wie man so etwas realisieren könnte?

F
10.010 Beiträge seit 2004
vor 16 Jahren

Du stellst Dir das glaube ich zu simple vor.

Warum gibt es zum Compilerbau riesige Aufsätze, und grosse complexe Tools?
Weil es kein einfaches Thema ist.

Schau mal auf codeplex.com unter den neuen Projekten.
http://www.codeplex.com/LazyParser

S
709 Beiträge seit 2005
vor 16 Jahren

Hallo Captain-Party

Vielleicht hilft dir die NRefactory Bibliothek von SharpDevelop. (http://icsharpcode.com/OpenSource/SD/Download/)

vg,
Simon