Conozco estructuras de datos y algoritmos. ¿Cómo programo un compilador simple?

Para cualquiera que esté dispuesto a escribir un mini compilador para un lenguaje de programación, este libro es una excelente manera de comenzar: cree su propio lenguaje de programación. Para obtener más conocimientos y teoría en profundidad, hay algunos libros excelentes como los que se enumeran aquí: ListOfCompilerBooks – GCC Wiki

Crear un compilador completo en C / C ++ es muy difícil, por lo que sugeriría probar uno en un lenguaje de alto nivel como Java, Python o si realmente quieres ir al extremo, Haskell. Mira este enlace: Escríbete un esquema en 48 horas.

Sin embargo, si realmente desea aprender el compilador / construcción del lenguaje en un lenguaje de bajo nivel, entonces C es probablemente una excelente manera de hacerlo y estos dos son los mejores para comenzar:

1. Construye tu propio Lisp
2. Esquema 9 de Empty Space: una versión anterior del libro está disponible en formato pdf de forma gratuita.

Es bueno que conozca las estructuras de datos y los algoritmos, pero este no es el único requisito para crear un compilador. Debe conocer la teoría de autómatas, gramáticas y analizadores. Es una tarea compleja, pero puedes continuar creando lentamente. En la clase de compilador de Stanford usan Cool

También lea los libros que Sourav ha sugerido. También sugeriré los mismos libros y artículos.