Existe-t-il un moyen d'écrire réellement un compilateur dans son propre langage ?
Vous ont pour avoir un langage existant dans lequel écrire votre nouveau compilateur. Si vous écriviez un nouveau compilateur, disons C++, vous l'écririez simplement en C++ et le compileriez d'abord avec un compilateur existant. En revanche, si vous créez un compilateur pour un nouveau langage, appelons-le Yazzleof, vous devrez d'abord écrire le nouveau compilateur dans un autre langage. En général, il s'agit d'un autre langage de programmation, mais ce n'est pas une obligation. Il peut s'agir d'assembleur, ou si nécessaire, de code machine.
Si vous étaient pour amorcer un compilateur pour Yazzleof, vous n'écrirez généralement pas un compilateur pour le langage complet au départ. Au lieu de cela, vous écrirez un compilateur pour Yazzle-lite, le plus petit sous-ensemble possible de Yazzleof (enfin, un sous-ensemble de assez petit au moins). Ensuite, dans Yazzle-lite, vous écrirez un compilateur pour le langage complet. (Comme Yazzle-lite est un sous-ensemble correct de Yazzleof, vous avez maintenant un compilateur qui peut se compiler lui-même.
Il existe un vraiment bon article sur le démarrage d'un compilateur à partir du niveau le plus bas possible (qui, sur une machine moderne, est essentiellement un éditeur hexadécimal), intitulé Amorçage d'un compilateur simple à partir de rien . On peut le trouver à l'adresse suivante https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html .