Studiuję Bootstrapping z Red Dragon Book Compilers i znalazłem schemat T dla kompilatora krzyżowego dość mylący. Nie rozumiem, co należy rozumieć przez „Uruchamianie kompilatora 1 do kompilatora 2”. Czy ktoś może podać jakieś lepsze wyjaśnienie, analogię lub przykład odnoszący się do jakiegoś kompilatora w świecie rzeczywistym?
Najpierw notacja. Przez Znaczy kompilator dla języka w języku , która produkuje kodu język wyjściowy / ekspres . To jest nagrobek lub T-diagramy .
Kompilowanie kompilatora
Załóżmy, że mamy kompilator krzyżowy dla nowego języka L w języku implementacyjnym S generującym kod dla maszyny N.
Załóżmy, że mamy również istniejący kompilator S działający na kodzie implementującym maszynę M dla maszyny M:
Uruchom LSN przez SMM, aby utworzyć LMN
Budowa kompilatora