¿Cuáles son los mejores libros sobre compiladores? Estoy planeando tomar una clase de compiladores graduados, y tengo algunos conocimientos básicos, pero quería leer un libro para asegurarme de que estoy listo. Sé que el Libro del Dragón es popular, ¿es el mejor?

Cuando enseñé compiladores, utilicé la Implementación moderna de compiladores de Andrew Appel en ML . Es fácil de leer y, además de todos los conceptos básicos (lexing, análisis, verificación de tipos, generación de código, asignación de registros), cubre técnicas para lenguajes funcionales y orientados a objetos y tiene un poco más de material sobre análisis estáticos más allá de la vida.

Otros puntos a su favor:

  • No se detiene demasiado en el lexer y el analizador sintáctico. Estas pueden haber sido partes interesantes de un compilador cuando la tecnología era nueva, por ejemplo, hace 40 o 50 años, pero ya no lo son.
  • La implementación de su compilador en un lenguaje con tipos de datos algebraicos y coincidencia de patrones lo hace significativamente mejor. ML estándar es casi como un DSL para escribir compiladores. Appel también tiene ediciones Java y C del libro, pero no las recomendaría tan altamente, ya que Java introduce un montón de repeticiones, y con C puedes administrar la memoria manualmente, lo cual es una molestia innecesaria.
  • El tratamiento de Appel del algoritmo de fusión de registro iterado es realmente agradable.

Dicho esto, el libro del Dragón es un clásico. No he visto la nueva edición, así que no sé cómo se compara con Appel.

¿El curso usa un libro de texto y sabes cuál? Si es así, es posible que desee leer algo diferente.

Los siguientes dos libros me parecieron muy buenos para comprender la implementación del compilador y las técnicas de diseño. Ambos libros han seguido un enfoque fácil y práctico para discutir conceptos.

(1) Principios y prácticas de construcción del compilador, por Kenneth C. Louden
@Compiler Construction

Recomendaré este libro para principiantes (o cursos de pregrado) o para cualquier persona que realice un proyecto en una implementación simple del compilador. Este libro explica todos los temas básicos en detalle y con un enfoque muy práctico. Si sigue este libro desde el principio, puede comprender funcionamiento del compilador de lenguaje TINY cuyo código completo figura en el apéndice del libro. También se incluye un proyecto para el compilador de lenguaje C– en el libro.

(2) Implementación del compilador moderno en C / Java por Andrew W. Appel
Implementación del compilador moderno
Para temas avanzados en técnicas de construcción de compiladores, este libro es una muy buena referencia. Este libro cubre todos los temas avanzados como recolección de basura, análisis de flujo de datos, técnicas de optimización de compiladores, etc.

También encontré Dragon Book muy clásico, pero parece estar desactualizado porque Dragon Book no trata muchos temas recientes en el diseño del compilador.

En el lado de la teoría, tiene que ser el Libro del Dragón, por supuesto (Aho, Sethi, Ullman). Si está utilizando yacc / lex, consulte “Introducción a la construcción del compilador con Unix” (Prentice Hall, sin impresión, pero muy legible y seguramente aún aplicable). Es corto, toneladas de código, y producen un subconjunto de C que realmente ilustra cómo usar yacc y lex.