にCベースの言語を追加することができますか?私は言語の変更を提案したくないので、Cコンパイラの実際の動作を知りたい。は、どのように私は私が変更または追加Cに私自身の拡張をし、GCC Cコンパイラにそれらを追加したい場合は、私が何をすべきかが必要になりますGCC
私はGCCのソースコードを見てきました。Objective-Cが、修正されたランタイムライブラリへの参照を作成するコードを生成する単純なパーサとして実装されているように見えます。通常のCコンパイラを使用します。私はそれを強く勉強していないので、私はおそらく正しい軌道にはない。
言ってやる例えば、私はちょうど楽しみのために、Objective-Cのに自分のキーワードを追加したいです。多分@assert
のように、実装が簡単なものを追加したいと思います。私が欲しいのは、私はObjective-Cランタイムに追加する関数を呼び出すこと@assert
ためのものです:
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
明らか
私はとにかく関数呼び出しとマクロとしてこれを実装することができますが、私はの理解を得るためにしたいですCソースコードの解析とコンパイルの段階であり、多分私自身の拡張のために自分自身の拡張を言語に追加することができます。
私が一貫して見ているソースコードは、「木」を意味し、アクションを実行したり、これらの木から情報を取得する多くの、多くのマクロがあります。
この種のことを説明するドキュメントがありますか?
私はあなたを助けていますが、特にObjective-Cのために、コンパイラをハックしたい場合は、LLVMをチェックアウトする必要がありますhttp://en.wikipedia.org/wiki/Abstract_syntax_tree –
を見ることができません。 AppleがLLVMに移行した理由の1つは、GCCよりも変更と拡張がはるかに簡単で、コードベースがはるかに洗練されていることです。 – user57368