Чи є спосіб насправді написати компілятор власною мовою?
Ви повинні мати якусь існуючу мову, щоб писати новий компілятор. Якщо ви писали новий, скажімо, компілятор C ++, ви просто написали б його на C ++ і спочатку скомпілювали з існуючим компілятором. З іншого боку, якщо ви створювали компілятор для нової мови, назвемо його Yazzleof, вам спочатку потрібно було б написати новий компілятор іншою мовою. Як правило, це була б інша мова програмування, але це не обов’язково. Це може бути монтажний або, якщо потрібно, машинний код.
Якщо ви були збираєтеся самонастроювання компілятора для Yazzleof, ви взагалі не написати компілятор для повного мови на початковому етапі. Замість цього ви повинні написати компілятор для Yazzle-lite, найменшого можливого підмножини Yazzleof (ну, принаймні , досить маленького підмножини). Тоді в Yazzle-lite ви б написали компілятор для повної мови. (Очевидно, це може відбуватися ітеративно, а не одним стрибком.) Оскільки Yazzle-lite є належним підмножином Yazzleof, тепер у вас є компілятор, який може скомпілювати себе.
Існує дуже хороший запис про завантаження компілятора з найнижчого можливого рівня (який на сучасній машині в основному є шістнадцятковим редактором) під назвою Bootstrapping простий компілятор з нічого . Її можна знайти за адресою https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html .