私はリンクを持っていませんが、私が聞いたことと経験から、C /C++はコンパイラを書くのに貧弱な言語です。まず第一に、あなたは本当にそれがスケーラブルである必要がありますか?または、この段階でスケーラブルですか?特にマークアップ言語の場合は?60 MB以上のソースをコンパイルしていないので、実際にスケーラブルである必要はないと思います。
とにかく私のプログラミング言語では、パーサーにbisonを使用しました(bison + flexを読み取る必要があります。私の言語にはない、すべての競合を回避するようにしてください)。次に、コードにCとC++の両方を使用します。バイソンはCを使用し、私は単純なC関数を呼び出して、構造体を作成および入力して抽象構文ツリーを作成するためです。次に、完了すると、ASTを実行してバイナリを生成するC++コードを呼び出します。
Standard MLは、言語の作成に非常に優れていると思われます。関数型言語を使用しない場合は、考え方に合っているので良い選択です(解析は左から右に行うことができますが、関数呼び出しはその順序にはなりません)。したがって、bisonを使用しない場合(またはC / C ++とbisonを使用して呼び出す方法を知っている場合)に推奨します。
注:コンパイラーを2回作成してみました。バイソンなしのCでの1回目バイソン付きの2回目。バイソンが私のために競合を見つけ、私がデバッグの土地で運命づけられていないという事実のために、私が指数関数的に長くかかったことは間違いありません(私はおそらく実際にコードを書く前に競合を報告する方法を見つけようとしますこれはまさにバイソンが行うことです)