Parser für Quellcode entwickeln

Rossibaer

Lieutenant
Registriert
Apr. 2007
Beiträge
754
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!
 
Hallo Maybrit und El Sheepy. Vielen Vielen Dank, dass hilft mir weiter...

Maybrit: diese Variante kommt sehr nah an das was ich mir zwar gedacht habe, jedoch nicht in code pressen konnte, der C Code hilft mir da sehr weiter. Ich denke der Knoten ist nun endlich geplatzt. Danke dir...

El Sheepy: Hab mir die Lektionen gesaugt, viel Stoff zum hören und sehen, konnte bisher nur reinschnuppern, aber das was ich bisher gesehen habe, sieht sehr vielversprechend aus für das, was ich vorhabe ... Danke

... und dann wäre da noch Crenshaw: http://compilers.iecc.com/crenshaw
 
Zuletzt bearbeitet:
Dank dem Drachenbuch kam ich schon mal so weit, dass ich die einzelnen Lexeme extrahieren konnte, jedoch hing ich dann bei den nächsten Schritten... Irgendwie kann ich zur Zeit noch nicht die im Buch beschriebene Überführung in eine Zwischensprache so verstehen, dass ich sie auch hätte umsetzen können. Deswegen bin ich auf der Suche nach weiterem Material um mehr Licht ins Dunkel zu bringen...
 
@El Sheepy:
Ich weiß nicht wie ich dir danken kann. Die Videos sind sowas von informativ. Sie helfen mir nicht nur meinen Parser immer weiter zu erweitern, sondern auch die weiterführende Literatur wie das Drachenbuch ein Stück weit besser zu verstehen ... DANKE!

@BlooDFreeZe:
danke für den Link. Habe ihn mir in die Lesezeichen aufgenommen und werde bei Gelegenheit da hinein schauen...

Danke nochmal an alle die sich hier beteiligt haben!
 
Zurück
Oben