2010-11-23 17 views
0

標準Cプリプロセッサの優れたC++実装を知っている人はいますか?私はC++ Cコードを解析する必要のプロジェクトに取り組んでいる、と私は、マクロなどをサポートしたいけどCプリプロセッサ自分の実装に興味がないと思いますCプリプロセッサのC++実装

理想的には、プリプロセッサは主Cファイルのファイル名に取る、及び前処理Cコードのストリームを返します。

これが失敗すると、Cの前処理をカバーする簡潔で包括的なリファレンスを誰にでもおすすめできますか?

+0

あなたはlex/yaccファイルを探しましたか? – arbithero

+2

GNU cppで何が問題なのですか? –

+0

ほとんどのCまたはC++コンパイラには、前処理されたファイルだけを出力できるコマンドラインスイッチが含まれています。過去に、私が書いたいくつかの社内ツールを含む多くのコード解析ツールでは、前処理機能を使用して独自の実装を行う必要がなくなりました。私はMicrosoftのC++コンパイラが15年前にこの機能を持っていたことを知っています。そして、私はGNU cppがやっていることを確信しています。 –

答えて

4

GNU cpp、GCCの部分は非常に柔軟で、C++の代わりにC言語で書かれていますが、Cコードの解析と前処理に非常に優れています。

+0

ありがとう - 私はこれにGCCを使用することができなかったことを認識していませんでした!とにかく私はそれを外部的に呼び出すことになるかもしれないので、それはCコードです。 – Cam

0

Lex and Yacc(それぞれFlexとBisonとも呼ばれます)を使用する必要があります。これらは、言語の解析に使用されるツールです。 This excellent bookは、尊敬できる大学図書館でご利用いただけます。

+3

これはどのようにして質問に答えますか? –

+1

これらのツールは単なるツールです:解析トークン/文法の結果を操作するためにc/C++コードを書く必要があります。これがプリプロセッサの過度の可能性があることが認められています。 – rtpg

+1

彼らはまた、プリプロセッサのハード部分(つまり、非常に畳み込まれた規則を持つマクロ置換え)ではあまり役に立ちません。 –