2010-08-16 5 views
23

Ich bin auf der Suche nach einem Compiler-Design-Buch. Ich lerne es am College; aber Vorträge waren nie für mich bestimmt. Darüber hinaus machen sie an meiner Hochschule nicht viel praktisches und ich glaube, selbst wenn ich ernsthaft den Kurs über endliche Automaten und Compiler-Design mache, werde ich nicht wissen, wie man einen Compiler implementiert. Also suche ich nach Büchern über die Implementierung eines Compilers. Ich finde "Modern Compiler Implementation" gut. Es hatte drei Möglichkeiten der Sprache und ich wählte das C-Buch, weil C eine kleine Sprache ist, wird es mehr für mich zu tun geben und mehr während des Tuns zu lernen. Ich wollte jedoch den Kurs lernen, einen Compiler für Lisp oder Python zu entwickeln [kann auch in der gleichen Sprache sein]; aber ich konnte nicht viel Material finden. Lisp ist eine alte Sprache und es sollte eine Dokumentation über das Entwerfen eines Compilers dafür geben. Ich brauche deine Vorschläge diesbezüglich.Lisp Compiler Design

Vielen Dank.

+2

Die kanonische Compiler Ressourcen Fragen ist [Lernen, einen Compiler zu schreiben] (http://stackoverflow.com/questions/1669/learning-to-write-a-compiler). – dmckee

+1

Ich mag die Idee, einen Scheme/Lisp-Compiler zu schreiben, weil Sie nicht alles lexen und analysieren müssen und die Konstrukte und Grammatik relativ einfach sind. – erjiang

+1

@erijang: ein 'nur' muss die Maschinerie implementieren, um einige Form für s-Ausdrücke zu lesen, implementieren Sie einige spezielle Formen (sagen wir 30) und ein Makro-System. Die Literatur zu letzterem ist riesig. –

Antwort

23

Lisp in small pieces ist wahrscheinlich das beste Buch zur Implementierung von Lisp. Sehr empfehlenswert. Wahrscheinlich verfügbar über einige gebrauchte Buch-Service. Es könnte teuer sein, sogar als gebrauchtes Buch. Es ist eine Übersetzung aus dem französischen Original. Es gibt auch eine überarbeitete Version in Französisch, die leider nicht ins Englische übersetzt wurde.

Ich würde auch empfehlen Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp von Peter Norvig. Es enthält die Beschreibung eines Scheme-Compilers, der in Common Lisp geschrieben wurde. Im Allgemeinen ist dies ein hervorragendes Buch.

Siehe auch diese Bibliographie auf Scheme implementation techniques.

Für Common Lisp gibt es Artikel verfügbar und einige Common Lisp Compiler kommen mit ein wenig Dokumentation der Implementierung und Compiler Interna. Normalerweise kann der Compiler nicht isoliert betrachtet werden, sondern sollte in Kombination mit der Laufzeit gesehen werden, zu der er kompiliert wird (GC, Befehlssätze, Speicherverwaltung im Allgemeinen, Threading, FFI-Schnittstellen, ...). Siehe zum Beispiel die Design of CMU Common Lisp.

7

Dies ist nicht genau für Lisp, sondern für Scheme (ein Lisp-Derivat), aber wir haben diese freie (wie in Bier) Text in meinen Programmiersprachen verwendet. Hier ist der Link:

http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Beachten Sie jedoch, dass sie lehren, wie man einen Scheme-Interpreter in keinem anderen als Schema zu schreiben. Es verwirrt zuerst deinen Verstand in Knoten, aber es wird nach einer Weile klarer. Ich bin mir nicht ganz sicher, ob das das ist, was Sie suchen, aber es ist ein Anfang und illustriert einige der wichtigeren Dinge, über die Sie nachdenken sollten.

5

Ich habe es nie gelesen, aber auf einmal gab es ein Buch namens "Lisp in Small Pieces", das für Ihre Zwecke ziemlich gut sein sollte.

14

Hier ist ein großartiger Überblick über ein Compiler-Design für Schema: An Incremental Approach to Compiler Construction. Es ist ein ziemlich kurzer Artikel, der beschreibt, wie man einen Maschinencode-Compiler für Scheme "von Grund auf" erstellt.