2010-08-16 10 views
23

Estoy buscando un libro de diseño de compilador. Lo estoy aprendiendo en la universidad; pero las conferencias nunca fueron para mí. Además, en mi universidad no hacen mucha práctica y creo que incluso si hago el curso sinceramente sobre autómatas finitos y diseño de compiladores, no sabré cómo implementar un compilador. Entonces, estoy buscando libros sobre la implementación de un compilador. Encuentro bueno el "Modern Compiler Implementation". Tenía tres opciones de lenguaje y elegí el libro C porque siendo C un lenguaje pequeño, tendré más para hacer y más para aprender durante el ejercicio. Sin embargo, quería aprender el curso de diseño de un compilador para Lisp o Python [también puede estar en el mismo idioma]; pero no pude encontrar mucho material disponible. Lisp es un lenguaje antiguo y debería haber documentación sobre cómo diseñar un compilador para él. Necesito tus sugerencias con respecto a esto.compilador Lisp diseño

Gracias.

+2

Las preguntas de los recursos del compilador canónico son [Aprender a escribir un compilador] (http://stackoverflow.com/questions/1669/learning-to-write-a-compiler). – dmckee

+1

Me gusta la idea de escribir un compilador Scheme/Lisp porque no tiene que manejar todo el lexing y el análisis, y las construcciones y la gramática son relativamente simples. – erjiang

+1

@erijang: uno 'solo' tiene que implementar la maquinaria para leer algunas formas para s-expresiones, implementar algunas formas especiales (digamos, 30) y un macro sistema. La literatura sobre este último es enorme. –

Respuesta

23

Lisp in small pieces es probablemente el mejor libro sobre la implementación de Lisp. Muy recomendable. Probablemente disponible a través de un servicio de libros usados. Puede ser costoso, incluso como un libro usado. Es una traducción del original francés. También hay una versión revisada en francés, que no se ha traducido al inglés, lamentablemente.

También recomendaría Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp por Peter Norvig. Contiene la descripción de un compilador Scheme escrito en Common Lisp. En general, este es un libro excepcional.

Ver también esta bibliografía en Scheme implementation techniques.

Para Common Lisp hay artículos disponibles y algunos compiladores de Common Lisp vienen con un poco de documentación de implementación y compilación interna. Por lo general, el compilador no puede verse de forma aislada, sino que debe verse en combinación con el tiempo de ejecución al que se compila (GC, conjuntos de instrucciones, gestión de memoria en general, subprocesamiento, interfaces FFI, ...). Ver por ejemplo el Design of CMU Common Lisp.

7

Esto no es exactamente para Lisp, pero para Scheme (un derivado lisp), pero usamos este texto libre (como en cerveza) en mi clase de lenguajes de programación. Aquí está el enlace:

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

tener en cuenta, sin embargo, que están enseñando cómo escribir un intérprete de Scheme nada menos que en el esquema. En cierto modo, al principio se tuerce la mente en nudos, pero se vuelve más claro después de un tiempo. No estoy exactamente seguro de si esto es lo que estás buscando, pero es un comienzo e ilustra algunas de las cosas más importantes en las que pensar.

5

Nunca lo leí, pero en un momento hubo un libro llamado "Lisp en pequeñas piezas" que se suponía que era bastante bueno para sus propósitos.

14

Aquí hay una gran visión general de un diseño de compilador para Scheme: An Incremental Approach to Compiler Construction. Es un artículo bastante breve que describe cómo crear un compilador de código de máquina para Scheme "desde cero".