Есть ли способ написать компилятор на его собственном языке?
У вас есть , чтобы иметь некоторый существующий язык для написания вашего нового компилятора. Если вы писали новый, скажем, компилятор C ++, вы просто написали бы его на C ++ и сначала скомпилировали его с существующим компилятором , С другой стороны, если вы создавали компилятор для нового языка, назовем его Yazzleof, вам сначала нужно написать новый компилятор на другом языке. Обычно это будет другой язык программирования, но это не обязательно. Это может быть сборка или, при необходимости, машинный код.
Если бы вы собирались загрузить компилятор для Yazzleof, вы вообще изначально не написали бы компилятор для полного языка. Вместо этого вы должны написать компилятор для Yazzle-lite, наименьшего возможного подмножества Yazzleof (ну, по крайней мере, довольно маленькое подмножество). Тогда в Yazzle-lite вы бы написали компилятор для полного языка. (Очевидно, что это может происходить итеративно, а не в одном прыжке.) Поскольку Yazzle-lite является подходящим подмножеством Yazzleof, теперь у вас есть компилятор, который может компилироваться сам.
Существует действительно хорошая запись о загрузке компилятора с самого низкого возможного уровня (который на современной машине является в основном шестнадцатеричным редактором) под названием Загрузка простого компилятора из ничего, Его можно найти на https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html.