697 Stimmen

Lernen, einen Compiler zu schreiben

Bevorzugte Sprachen : C/C++, Java und Ruby.

Ich bin auf der Suche nach hilfreichen Büchern/Tutorials über das Schreiben eines eigenen Compilers, einfach zu Ausbildungszwecken. Ich kenne mich am besten mit C/C++, Java und Ruby aus, daher bevorzuge ich Quellen, die eine dieser drei beinhalten, aber jede gute Quelle ist akzeptabel.

2voto

Bubbles Punkte 456

Der schnellste Weg führt über zwei Bücher:

Fassung von 1990 Eine Einführung in die Kompilierungstechniken, ein erster Kurs mit ANSI C, LeX und YaCC von JP Bennett - ein perfektes Gleichgewicht zwischen Beispielcode, Parsing-Theorie und Design - es enthält einen kompletten Compiler in C, lex und yacc für eine einfache Grammatik

Drachenbuch (ältere Version) - größtenteils eine ausführliche Referenz für die Funktionen, die in dem früheren Buch nicht behandelt wurden

1voto

Wenn Sie wie ich keine formale Informatikausbildung haben und daran interessiert sind, einen einen Compiler zu bauen/wissen zu wollen, wie er funktioniert:

Ich empfehle "Programmiersprachenprozessoren in Java: Compiler und Interpreter", ein erstaunliches Buch für einen autodidaktischen Computerprogrammierer.

Meiner Meinung nach ist es kein großes Problem, die Grundlagen der Sprachtheorie, des Automaten und der Mengenlehre zu verstehen. Das Problem ist, wie man diese Dinge in Code umsetzt. Das oben genannte Buch zeigt Ihnen, wie Sie einen Parser schreiben, den Kontext analysieren und Code erzeugen können. Wenn Sie dieses Buch nicht verstehen können, dann muss ich sagen, geben Sie es auf, einen Compiler zu bauen. Das Buch ist das beste Programmierbuch, das ich je gelesen habe.

Es gibt noch ein anderes, ebenfalls gutes Buch, Compiler-Entwurf in C . Es gibt eine Menge Code, und es sagt Ihnen alles darüber, wie man einen Compiler und Lexer-Tools zu bauen.

Der Bau eines Compilers ist eine unterhaltsame Programmierübung, bei der man eine Menge Programmierfähigkeiten lernen kann.

Kaufen Sie nicht die Drachenbuch . Es war eine Verschwendung von Geld und Zeit und ist nicht für einen Praktiker.

-4voto

Mike Dunlavey Punkte 39339

Wenn ich eine neue Sprachidee ausprobieren will, schreibe ich einfach einen einfachen Parser und lasse ihn eine Sprache generieren, für die man leicht gute Compiler bekommt, wie C.

Was meinen Sie, wie wurde C++ gemacht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X