1unitedpower: Erstellung eines simplen Preprocessors

Beitrag lesen

mein Ziel
Ziel meines Unterfangens soll eine Umformung eines proprietäre Code-Kommentar-Blocks in wahlweise Klartext sein (z.B. Markdown). Ein Preprozessor eben, wenn ich richtig informiert bin.

Ich mag den Begriff Preprozessor nicht. Wörtlich übersetzt heißt das nichts anderes als Vorverarbeitung. Damit kann so ziemlich alles und nichts gemeint sein. Leider haben bestimmte CSS-Dialekte diesen Begriff populär gemacht.

Ein präzieseres Wort für die Art von Software, die du entwickelst, ist Compiler. Ein Compiler ist ein Programm, das einen Text in einem bestimmten Quellformat einliest und daraus einen Text in einem bestimmten Zielformat erzeugt. Dabei soll die Bedeutung (die Semantik) des Ausgabetextes möglichst der Bedeutung des Eingabetextes entsprechen.

Compiler durchlaufen ganz grob zwei Phasen:

  1. Parsen: Texteingabe aus dem Quellformat in einen Syntaxbaum konvertieren
  2. Code-Generierung: Syntaxbaum in eine Textausgabe im Zielformat erzeugen

Notiz am Rande: Du hast anfangs das Wort Parser Generator gebraucht, aber du meintest eigentlich Compiler. Ein Parser Generator ist ein Programm, dass aus einer gegebene Sprachdefinition automatisch einen Parser erzeugt.

Sowie ich dich verstanden habe hast die erste Phase bereits implementiert. Jetzt geht es darum, die zweite Phase, also den Code-Generator zu implementieren. Typischwersie bekommt der Code-Generator das Ergebnis des Parsers, also den Syntaxbaum, als Eingabe. Diesen Baum durchläuft der Code-Generator Knoten für Knoten, und während er das tut, fügt er Stück für Stück die Ausgabe zusammen. Die notwendigen Algorithmen im Detail zu erklären würde hier deutlich den Rahmen sprengen. Ich würde dir das sogenannte Dragonbook zu dem Theme emphelen: "Compilers: Principles, Techniques, and Tools".