実際に独自の言語でコンパイラを作成する方法はありますか?
新しいコンパイラを作成するには、既存の言語が必要です。たとえば、C++ コンパイラを新しく作成する場合は、C++ で作成し、まず既存のコンパイラでコンパイルします。一方、新しい言語用のコンパイラを作成する場合、それを Yazzleof と呼びましょう。最初に別の言語で新しいコンパイラを作成する必要があります。通常、これは別のプログラミング言語になりますが、そうである必要はありません。アセンブリ、または必要に応じてマシン コードにすることができます。
Yazzleof 用のコンパイラをブートストラップする場合、通常、最初に完全な言語用のコンパイラを作成することはありません。代わりに、Yazzleof の可能な限り最小のサブセットである Yazzle-lite 用のコンパイラを作成します (まあ、少なくともかなり小さなサブセットです)。次に、Yazzle-lite で、完全な言語用のコンパイラを作成します。(明らかに、これは 1 回のジャンプではなく反復的に発生する可能性があります。) Yazzle-lite は Yazzleof の適切なサブセットであるため、これで、それ自体をコンパイルできるコンパイラーができました。
Bootstrapping a simple compiler from nothingというタイトルの、可能な限り低いレベル (最新のマシンでは基本的に 16 進エディター) からのコンパイラーのブートストラップに関する非常に優れた記事があります。https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.htmlにあります。