2011-09-09 6 views
1

私のCプログラムで宣言されている変数をすべて分析したいと思います。私はこれを行う簡単な方法はありますか?私はこの目的のためだけにレクサーを構築することは面倒だと思うでしょう。別の方法がありますか?Cでの変数宣言の検出/リスト表示

私はより明確にする必要があると思います:-)。私は書くつもりのCライブラリを使ってたくさんのCファイルを解析しようとしています。このライブラリにはこの機能が必要です。したがって、私がCを使ってこれを行うことができれば(それは私のライブラリと統合することができるので)素晴らしいでしょう。しかし私は他の言語でも前処理することができます。しかし、それは依存関係を増加させるでしょう。

+0

あなたは何をしようとしていますか?実行可能ファイルのobjdumpまたはリンカの出力を調べることで、スタック以外の変数の場所とサイズを簡単に判断できます。 – user47559

答えて

1

cscope(http://cscope.sourceforge.net/)は、プログラム内のすべてのシンボルを識別してインデックスを付けることができ、コマンドラインモードを使用してコマンドラインまたはGUIツールからシンボルデータベースを照会します。

2

typedefなどを扱う場合は、とにかく非常に強力なパーサーを作成する必要があります。 clang/llvmを見てみるといいかもしれません。おそらく、簡単に見たいデータを出力するように変更できます。

1

ジョブを正しく実行するには、Cプリプロセッサと字句解析ツールがかなり必要です。これはCコンパイラのかなりの部分です。

仕事をアドホックに行うのは簡単ですが、あなたはどのようなアドホックになるかを選択することができます。

+0

アドホックなの? – Gooner

+0

_ad hoc_の通常の意味は、 'this for'という意味で '特定の目的のためだけに形成、整理、または実行された'という意味です。だから、本格的なCプリプロセッサと字句解析ツールで仕事をするのではなく、明示的に接頭辞付きの組み込み型と型だけを認識することで(もし望むなら)十分に良い仕事をすることができます'struct xxx'や' union yyy'や 'enum zzz'のようなものです。これにより、時にはかなりの変数が得られることがあります。多くの場合、それは多くのことを逃しています。 'www_t'(' _t'サフィックスを認識)を追加することを考えます。そして、あなたは 'FILE'などについて心配しています。それは_ad hoc_です。 –