2010-08-16 12 views
23

Sto cercando un libro di progettazione del compilatore. Lo sto imparando al college; ma le lezioni non sono mai state pensate per me. Inoltre, nel mio college non fanno molto pratico e credo che, anche se seguirò sinceramente il corso sugli automi finiti e sul design del compilatore, non saprò come implementare un compilatore. Quindi, sto cercando libri sull'implementazione di un compilatore. Trovo che "Modern Compiler Implementation" sia buono. Aveva tre opzioni di lingua e io ho scelto il libro C perché C essendo una lingua piccola ci sarà di più da fare per me e altro da imparare durante il fare. Tuttavia, volevo imparare il corso progettando un compilatore per Lisp o python [potrebbe essere anche nella stessa lingua]; ma non sono riuscito a trovare molto materiale disponibile. Lisp è un linguaggio vecchio e ci dovrebbe essere qualche documentazione sulla progettazione di un compilatore per questo. Ho bisogno dei tuoi suggerimenti in merito.Lisp compiler design

Grazie.

+2

Le domande di risorse del compilatore canonico sono [Imparare a scrivere un compilatore] (http://stackoverflow.com/questions/1669/learning-to-write-a-compiler). – dmckee

+1

Mi piace l'idea di scrivere un compilatore Scheme/Lisp perché non devi gestire tutto il lexing e l'analisi e i costrutti e la grammatica sono relativamente semplici. – erjiang

+1

@erijang: uno 'solo' deve implementare il meccanismo per leggere alcune espressioni di fo s-form, implementare alcuni moduli speciali (ad esempio, 30) e un sistema macro. La letteratura su quest'ultimo è enorme. –

risposta

23

Lisp in small pieces è probabilmente il miglior libro sull'implementazione del Lisp. Altamente raccomandato. Probabilmente disponibile attraverso alcuni servizi di libri usati. Potrebbe essere costoso, anche come un libro usato. È una traduzione dall'originale francese. C'è anche una versione riveduta in francese, che non è stata tradotta in inglese - sfortunatamente.

Vorrei anche raccomandare Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp da Peter Norvig. Contiene la descrizione di un compilatore Scheme scritto in Common Lisp. Generalmente questo è un libro eccezionale.

Vedi anche questa Biblografia su Scheme implementation techniques.

Per Common Lisp ci sono articoli disponibili e alcuni compilatori Common Lisp vengono forniti con un po 'di documentazione di implementazione e interni del compilatore. Di solito il compilatore non può essere visto in isolamento, ma dovrebbe essere visto in combinazione con il runtime che compila (GC, set di istruzioni, gestione della memoria in generale, threading, interfacce FFI, ...). Vedi ad esempio lo Design of CMU Common Lisp.

7

Questo non è esattamente per Lisp, ma per Scheme (un derivato lisp), ma abbiamo usato questo testo libero (come nella birra) nella mia classe di linguaggi di programmazione. Ecco il link:

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

Tenete a mente, tuttavia, che essi stanno insegnando come scrivere un interprete Scheme in nientemeno che Scheme. In un primo momento, ti tormenta la mente, ma dopo un po 'diventa più chiaro. Non sono esattamente sicuro se questo è ciò che stai cercando, ma è un inizio e illustra alcune delle cose più importanti a cui pensare.

5

Non l'ho mai letto, ma una volta c'era un libro intitolato "Lisp in Small Pieces" che doveva essere abbastanza buono per i tuoi scopi.