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.

4voto

magneto12321 Punkte 31

Dieses Buch ist bisher noch nicht in der Liste enthalten:

Grundlagen des Compilerentwurfs (Torben Mogensen) (aus der Abteilung für Informatik, Universität Kopenhagen)

Ich bin auch daran interessiert, etwas über Compiler zu lernen und plane, in den nächsten Jahren in diese Branche einzusteigen. Dieses Buch ist das ideale Theoriebuch, um mit dem Erlernen von Compilern zu beginnen, soweit ich das sehen kann. Es ist KOSTENLOS zu kopieren und zu vervielfältigen, sauber und sorgfältig geschrieben und vermittelt es in einfachem Englisch ohne Code, aber dennoch mit Anleitungen und Diagrammen usw. die Mechanik. Imo einen Blick wert.

3voto

user9529 Punkte 1

Das Drachenbuch ist zu kompliziert. Also ignorieren Sie es als Ausgangspunkt. Es ist gut und regt zum Nachdenken an, wenn man bereits einen Ausgangspunkt hat, aber für den Anfang sollten Sie vielleicht einfach versuchen, einen mathematischen/logischen Ausdrucksauswerter zu schreiben, der RD-, LL- oder LR-Parsing-Techniken verwendet, wobei alles (Lexing/Parsing) von Hand geschrieben wird, vielleicht in C/Java. Das ist an sich schon interessant und gibt Ihnen eine Vorstellung von den Problemen, die mit einem Compiler verbunden sind. Dann können Sie Ihre eigene DSL mit einer Skriptsprache erstellen (da die Verarbeitung von Text in diesen Sprachen in der Regel einfacher ist) und wie jemand sagte, Code entweder in der Skriptsprache selbst oder in C generieren. Sie sollten wahrscheinlich flex/bison/antlr usw. für das Lexing/Parsing verwenden, wenn Sie es in C/Java machen.

3voto

Als Ausgangspunkt ist es gut, einen rekursiven Descent-Parser (RDP) zu erstellen (sagen wir, Sie wollen Ihre eigene BASIC-Variante erstellen und einen BASIC-Interpreter bauen), um zu verstehen, wie man einen Compiler schreibt. Die besten Informationen fand ich in Herbert Schilds C Power Users, Kapitel 7. Dieses Kapitel verweist auf ein anderes Buch von H. Schildt "C The complete Reference", in dem er erklärt, wie man einen Taschenrechner (einen einfachen Ausdrucksparser) erstellt. Beide Bücher habe ich bei eBay sehr günstig gefunden. Sie können den Code für das Buch unter www.osborne.com einsehen oder in www.HerbSchildt.com Ich habe den gleichen Code für C# in seinem neuesten Buch gefunden

3voto

Jay Punkte 9403

In der Liste fehlen: Garbage Collection: Algorithms for Automatic Dynamic Memory Management, von Jones und Lins.

(Angenommen, Sie schreiben den Compiler und Laufzeitsystem, und dass Sie eine Garbage-Collected-Sprache implementieren.

2voto

uliwitness Punkte 8124

Wenn Sie nicht nur nach Büchern suchen, sondern auch an Websites interessiert sind, die Artikel zu diesem Thema enthalten, habe ich über verschiedene Aspekte der Entwicklung einer Programmiersprache gebloggt. Die meisten dieser Beiträge finden Sie in meinem Blog unter Kategorie "Sprachdesign" .

Insbesondere behandle ich die manuelle Generierung von Intel-Maschinencode, die automatische Generierung von Maschinen- oder Bytecode, das Erstellen eines Bytecode-Interpreters, das Schreiben einer objektorientierten Laufzeitumgebung, das Erstellen eines einfachen Laders und das Schreiben eines einfachen Mark/Sweep Garbage Collectors. Und das alles auf sehr praktische und pragmatische Weise, anstatt Sie mit viel Theorie zu langweilen.

Ich würde mich über eine Rückmeldung zu diesen Themen freuen.

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