Aunque los otros comentarios y publicaciones son correctos, esta pregunta es demasiado vaga y tal vez un poco confusa, no puedo dejar de compartir algunas recomendaciones. He recopilado varios enlaces y libros sobre la implementación de Lisp ya que recientemente he desarrollado cierta fascinación con la implementación del lenguaje.Es un tema profundo, por supuesto, pero leer cosas relacionadas con Lisp es especialmente convincente porque puedes omitir muchas de las lecturas intensas en el análisis si implementas un compilador Lisp o un intérprete en Lisp, y simplemente usas read
. Esto permite a los autores llegar rápidamente a la compilación o interpretación. Estas recomendaciones son libros que he leído o comenzado, o que estoy leyendo, y que tratan principalmente con Scheme, no con Common Lisp, pero que pueden ser de algún interés.
Si no tiene experiencia en la implementación del lenguaje y nunca ha tenido el placer de leer acerca de los clásicos "evaluadores metacirculares" de Lisp y Scheme, recomendaría Structure and Interpretation of Computer Programs. Si ha visto Lisp-in-Lisp (o Scheme-in-Scheme ...) puede saltar adelante. En los dos últimos capítulos de SICP, los autores presentan algunos intérpretes diferentes para Lisp/Scheme y algunas variantes, así como un compilador de código de bytes y una máquina virtual. Es simplemente un libro brillante, y gratis.
Si no tiene tiempo para leer SICP, o si no desea recorrerlo solo para acceder a los capítulos de interpretación y compilación, le recomiendo The Little Schemer. Aunque es muy corta y está destinada a los recién llegados a Lisp y Scheme, si nunca has visto un intérprete de Lisp escrito en Lisp, presentan uno, y es un libro bastante encantador, pero podría no serlo para todos debido al estilo lindo. .
Hay otro libro gratis en Scheme similar al SICP, llamado An Introduction to Scheme and its Implementation, que no he leído, pero he usado como referencia para algunos bits. Hay secciones sobre intérpretes y compiladores allí, y parece ir un poco más profundo que SICP, tratando con cosas más peludas como el análisis también. Quizás necesite un editor, pero es una oferta impresionante, no obstante.
Con una buena idea de cómo hacer Lisp en Lisp, puedes acercarte a implementar Lisp en un nivel inferior.
Lisp in Small Pieces se recomienda con frecuencia. He leído la mayor parte, y puedo decir que definitivamente es un gran libro, lleno de cosas insignificantes. Volveré sobre esto con un peine fino, porque es fácil raspar cuando no entiendes algo. También tuve problemas para ejecutar el código del sitio del autor; si lo obtiene, le recomiendo usar Gambit Scheme y ejecutar el código que se basa en Meroonet con Meroon, de la distribución this. Lisp en Small Pieces presenta una serie de intérpretes escritos en Scheme, así como un compilador de código de bytes y un compilador a C.
Lisp en Small Pieces se mueve rápido, y es bastante denso. Si es demasiado para ti, quizás comiences con The Essentials of Programming Languages. He leído algo y es bastante bueno, pero son más intérpretes. Aparentemente, una de las ediciones más antiguas (¿1º? No estoy seguro ...) incluía un compilador. Parece haber muchos cambios entre las 3 ediciones, pero el primero es súper barato en Amazon, así que échale un vistazo.
En cuanto a la compilación de C, esta es una especie de tema denso con muchas partes peludas. La compilación para C saca a relucir todos estos problemas raros de las esquinas, como la optimización de las interceptaciones y los cierres, las continuaciones de primera clase y la recolección de basura, pero es bastante interesante, y muchas implementaciones "reales" de Scheme siguen esta ruta. La presentación de Marc Feeley sobre esto es bastante interesante, titulada The 90 Minute Scheme to C compiler.
Tengo menos recursos en la compilación hasta el ensamblaje, pero a menudo hay un documento recomendado que presenta la compilación de Scheme en x86, llamado An Incremental Approach to Compiler Construction.. Asume poco del lector, pero descubrí que simplemente va demasiado rápido y no completa suficientes detalles. Quizás tengas mejor suerte.
Gran parte de la recomendación anterior proviene de este monstruoso comentario en Hacker News desde hace más de un año, desde mahmud. Hace referencia a una cantidad de recursos ML y una compilación utilizando continuaciones.No he llegado tan lejos en mi estudio, así que no puedo decir lo que es bueno o no. Pero es un comentario increíblemente valioso. Los trabajos mencionados incluyen "Compilación con Continuaciones" de Andrew Appel y el documento "Técnicas de Colección de Basura Uniprocesador" de Paul Wilson.
¡Buena suerte!
Esto no tiene ningún sentido – Mehrdad