¿Hay alguna manera de escribir realmente un compilador en su propio idioma?
Usted tener tener algún idioma existente para escribir su nuevo compilador. Si estuviera escribiendo un nuevo compilador, por ejemplo, C++, usted acaba de escribir en C++ y compilar con un compilador existente en primer lugar. Por otro lado, si estuviera creando un compilador para un nuevo idioma, llamémoslo Yazzleof, primero tendría que escribir el nuevo compilador en otro idioma. En general, este sería otro lenguaje de programación, pero no tiene por qué serlo. Puede ser ensamblado, o si es necesario, código de máquina.
Si fueron yendo a arrancar un compilador para Yazzleof, generalmente no escribirías un compilador para el idioma completo inicialmente. En su lugar, escribiría un compilador para Yazzle-lite, el subconjunto más pequeño posible de Yazzleof (bueno, un subconjunto bastante pequeño, al menos subconjunto). Luego, en Yazzle-lite, escribirías un compilador para el idioma completo. (Obviamente, esto puede ocurrir iterativamente en lugar de en un salto.) Yazzle-lite es un subconjunto propio de Yazzleof, ahora tiene un compilador que puede compilarse a sí mismo.
Hay una muy buena valoración crítica sobre bootstrapping un compilador desde el nivel más bajo posible (que en una máquina moderna es básicamente un editor hexadecimal), titulado Inicializar un simple compilador de la nada. Se puede encontrar en https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html.
Gracias por la información, a todos. Cuando se explica con la idea de escribir inicialmente un compilador limitado, y luego construir sobre eso, entonces la idea de bootstrapping tiene más sentido. Este semestre tomo una clase de compiladores, una decisión influida en gran medida por [la publicación de Steve Yegge sobre la importancia de una clase en los compiladores] (http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html) es, y acabo de comprar una copia del libro de Dragon del enlace de Amazon que se modificó tanto antes. – pbh101
Véase también una pregunta similar: [Implementación de un compilador en sí mismo] (http://stackoverflow.com/questions/193560/implementing-a-compiler-in-itself) –