Czy istnieje sposób na napisanie kompilatora w swoim własnym języku?
Ci mają mieć jakiś istniejący język do pisania nowego kompilatora. Jeśli chcesz napisać nową, powiedzmy, kompilator C ++, to po prostu napisać w C ++ i skompilować go z istniejącym kompilatora pierwszy. Z drugiej strony, gdybyś tworzył kompilator dla nowego języka, nazwijmy go Yazzleof, musiałbyś najpierw napisać nowy kompilator w innym języku. Generalnie byłby to inny język programowania, ale nie musi. Może to być kod montażowy lub w razie potrzeby kod maszynowy.
Gdybyś miał załadować kompilator dla Yazzleof, generalnie nie napisałbyś początkowo kompilatora dla pełnego języka. Zamiast tego napisałbyś kompilator dla Yazzle-lite, najmniejszego możliwego podzbioru Yazzleof (cóż, przynajmniej całkiem małego podzbioru). Następnie w Yazzle-lite napisałbyś kompilator dla pełnego języka. (Oczywiście może to nastąpić iteracyjnie zamiast w jednym skoku). Ponieważ Yazzle-lite jest właściwym podzbiorem Yazzleof, masz teraz kompilator, który może się skompilować.
Jest naprawdę dobry artykuł o ładowaniu kompilatora z najniższego możliwego poziomu (który na nowoczesnej maszynie jest w zasadzie edytorem szesnastkowym), zatytułowany Bootstrapping a simple compiler from none . Można go znaleźć pod adresem https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html .