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.

12voto

Ben Combee Punkte 16303

Ein noch nicht vorgeschlagenes, aber sehr wichtiges Buch ist "Linker und Lader" von John Levine. Wenn Sie keinen externen Assembler verwenden, benötigen Sie eine Möglichkeit, eine Objektdatei auszugeben, die in Ihr endgültiges Programm gelinkt werden kann. Selbst wenn Sie einen externen Assembler verwenden, müssen Sie wahrscheinlich Relokationen verstehen und wissen, wie der gesamte Programmladeprozess funktioniert, um ein funktionierendes Werkzeug zu erstellen. Dieses Buch sammelt viele der zufälligen Überlieferungen rund um diesen Prozess für verschiedene Systeme, einschließlich Win32 und Linux.

12voto

wvdschel Punkte 11690

Wenn Sie bereit sind, LLVM zu verwenden, sehen Sie sich dies an: http://llvm.org/docs/tutorial/ . Es lehrt Sie, wie man einen Compiler von Grund auf unter Verwendung des LLVM-Frameworks schreibt, und setzt keine Kenntnisse über das Thema voraus.

Das Tutorial schlägt vor, dass Sie Ihren eigenen Parser und Lexer usw. schreiben, aber ich rate Ihnen, sich mit Bison und Flex zu beschäftigen, sobald Sie die Idee haben. Sie machen das Leben so viel einfacher.

11voto

mfx Punkte 6908

Der LCC-Compiler ( wikipedia ) ( Projekt-Homepage ) ( github.com/drh/lcc ) von Fraser und Hanson wird in ihrem Buch "A Retargetable C Compiler: Design and Implementation" beschrieben. Es ist sehr lesenswert und erklärt den gesamten Compiler bis hin zur Codegenerierung.

11voto

Lothar Punkte 11643

Ich fand das Dragon-Buch viel zu schwer zu lesen, da es sich zu sehr auf die Sprachtheorie konzentriert, die für das Schreiben eines Compilers in der Praxis nicht wirklich erforderlich ist.

Ich würde die Oberon Buch, das den vollständigen Quelltext eines erstaunlich schnellen und einfachen Oberon-Compilers enthält Projekt Oberon .

Alt text

11voto

Chris Bunch Punkte 83897

Das Drachenbuch ist definitiv das "Compilerbau"-Buch, aber wenn Ihre Sprache nicht ganz so kompliziert ist wie die aktuelle Generation von Sprachen, sollten Sie sich das Interpreter-Muster aus Entwurfsmuster .

Das Beispiel im Buch entwirft eine Sprache, die regulären Ausdrücken ähnelt, und ist gut durchdacht, aber wie es im Buch heißt, ist es gut, um den Prozess zu durchdenken, aber es ist wirklich nur bei kleinen Sprachen effektiv. Es ist jedoch viel schneller, einen Interpreter für eine kleine Sprache nach diesem Muster zu schreiben, als all die verschiedenen Arten von Parsern, Yacc und Lex usw. zu lernen...

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