Hallo zusammen,
aus Langeweile dachte ich mir, hey, schreib doch mal einen Parser für VB. Das Ergebnis war das ich seit nun mehreren Wochen an diesem Problem sitze. Mir gehts dabei mehr um das Verstehen als das blosse runter schreiben. Ein sehr weit entferntes Ziel wäre dann daraus einen Compiler für VB geschrieben zu haben, aber das später, erstmal die Stufe eines halbwegs funktionierenden Parsers würde mir reichen...
Der Parser sollte vorerst den gegebenen VB Quellcode in das CodeDom Objektmodell überführen. Angefangen habe ich mit einem Lexer der mir den Quellcode in eine Liste von Lexemen zerstückelt, d.h. Literale wie 1.123 oder "Ich bin ein String" werden erkannt, Schlüsselwörter, Operatoren ebenfalls. D.h. ich habe jetzt aus dem Code einen Stream von Lexemen den ich nun weiter auseinander nehmen möchte. Wo ich hänge ist einfach der nächste Schritt, d.h. das Konvertieren des Streams in eine Baum ähnliche Struktur, z.B. der Root Node ist dann Class mit mehreren Knoten für die einzelnen Elemente wie z.B. Methoden, Felder, Properties usw. Die Methoden bestehen dann wieder aus einer Liste von Parametern und der einzelnen Anweisungen, die wieder in Literale, Methodenaufrufe, Operationen gestückelt werden.
Mir gehts nicht darum jetzt fertig ausformulierte Codes von euch zu verlangen, sondern vielmehr um Denkanstöße, wie ich näher an mein Hauptziel (Parser) komme. Wenn einer paar nützliche Links zu diesem Thema hätte, wäre ich dankbar...
Viele Grüße
Rossibaer
PS: Danke das du bis hierher gelesen hast!
aus Langeweile dachte ich mir, hey, schreib doch mal einen Parser für VB. Das Ergebnis war das ich seit nun mehreren Wochen an diesem Problem sitze. Mir gehts dabei mehr um das Verstehen als das blosse runter schreiben. Ein sehr weit entferntes Ziel wäre dann daraus einen Compiler für VB geschrieben zu haben, aber das später, erstmal die Stufe eines halbwegs funktionierenden Parsers würde mir reichen...
Der Parser sollte vorerst den gegebenen VB Quellcode in das CodeDom Objektmodell überführen. Angefangen habe ich mit einem Lexer der mir den Quellcode in eine Liste von Lexemen zerstückelt, d.h. Literale wie 1.123 oder "Ich bin ein String" werden erkannt, Schlüsselwörter, Operatoren ebenfalls. D.h. ich habe jetzt aus dem Code einen Stream von Lexemen den ich nun weiter auseinander nehmen möchte. Wo ich hänge ist einfach der nächste Schritt, d.h. das Konvertieren des Streams in eine Baum ähnliche Struktur, z.B. der Root Node ist dann Class mit mehreren Knoten für die einzelnen Elemente wie z.B. Methoden, Felder, Properties usw. Die Methoden bestehen dann wieder aus einer Liste von Parametern und der einzelnen Anweisungen, die wieder in Literale, Methodenaufrufe, Operationen gestückelt werden.
Mir gehts nicht darum jetzt fertig ausformulierte Codes von euch zu verlangen, sondern vielmehr um Denkanstöße, wie ich näher an mein Hauptziel (Parser) komme. Wenn einer paar nützliche Links zu diesem Thema hätte, wäre ich dankbar...
Viele Grüße
Rossibaer
PS: Danke das du bis hierher gelesen hast!