Das erste Werkzeug, das ich empfehlen würde, ist das Drachenbuch. Das ist die Referenz für den Aufbau von Compilern. Die Gestaltung einer Sprache ist keine leichte Aufgabe, die Implementierung ist noch schwieriger. Das Drachenbuch hilft dort. Das Buch verweist sogar auf die Standard-Unix-Tools Lex und Yacc. Die gnu-äquivalenten Werkzeuge heißen flex und bison. Sie erzeugen beide Lexer und Parser. Es gibt auch modernere Werkzeuge zum Erzeugen von Lexer und Parser, z. Für Java gibt es ANTLR (ich erinnere mich auch an javacc und CUP, aber ich habe mich nur ANTLR bedient). Die Tatsache, dass ANTLR Parser und Lexer kombiniert und das Eclipse-Plugin verfügbar ist, macht es sehr komfortabel. Aber um sie zu vergleichen, den Typ des Parsers, den Sie brauchen und wissen, wofür Sie sie brauchen, sollten Sie das Dragon-Buch lesen. Es gibt auch andere Dinge, die Sie beachten müssen, wie Laufzeitumgebung, Programmierparadigma, ....
Wenn Sie bereits bestimmte Design-Ideen haben und Hilfe für einen bestimmten Schritt oder ein Detail benötigen, könnten die Anwsers hilfreicher sein.
Eng verwandte Fragen (alle durchsucht nach [compiler]
auf stackoverflow):
...
Und ähnliche Themen (aus derselben Suche):
...
Edit: Ich weiß, dass die stackoverflow-bezogene Fragensuche nicht so ist, wie wir es gerne hätten, aber Brauchten wir wirklich die n-te Wiederholung dieses Themas? Meh!
ANTLR ist ein sehr schöner Parser-Generator, geschrieben in Java. Es gibt auch ein grandioses Buch .
Ich mag Flex (Fast Lex) [Lexikalischer Scanner]
und Bison (A Hairy Yacc) [Noch ein Compiler-Compiler]
Beide sind kostenlos und auf allen * NIX-Installationen verfügbar. Für Windows einfach cygwin installieren.
Aber ich alte Schule.
Mit diesen Tools finden Sie auch die Lex Regeln und Yacc Gramer für viele populäre Sprachen im Internet. Auf diese Weise erhalten Sie einen schnellen Weg zum Starten und können die Anwender dann individuell anpassen.
Beispiel: Arithmetische Ausdrucksverarbeitung [Reihenfolge der Präzedenzfälle usw. ist ein Problem, das zu Tode gemacht wurde] Sie können schnell die Programmiersprache hierfür aus dem Internet beziehen.
Eine Alternative zum Nachdenken ist, eine Front-End-Erweiterung für GCC zu schreiben.
Nicht Trivial, aber wenn Sie eine kompilierte Sprache wollen, spart es eine Menge Arbeit in der Codegenerierung (Sie müssen immer noch Liebe und Flex / Bison verstehen).
Tags und Links language-design