2012-06-21 6 views
15

私は解析できるようにするために巨大なCファイル(〜100k行)を持っています。主に、すべての構造の個々のフィールド(構造内のすべてのフィールドのフィールド名やタイプなど)の詳細をその定義から取得する必要があります。既にこれを行うには良い(オープンソース、私は自分のコードで使用できる)方法はありますか?または、私は自分のパーサをこのために書くべきですか?私は自分自身を書く必要がある場合、誰もが良い場所を提案することができますか?私は前にPythonで作業したことはありません。Pythonを使ってCコードを解析する

おかげ

+1

サンプルを投稿できますか?あなたはCコンパイラをテストする必要があります(そして、構造体、structs-structs、typedefs、プリプロセッサなどをサポートするか、単純な構造体からデータを取得する必要がありますか?)このCファイルはJSON、CSV、データベース、または別の* data *形式ではなく、100k LOC Cフ​​ァイル... –

+0

...あなたはおそらく前にCパーサーも書かなかったでしょう。あなたはこれを自分でやりたくはありません; Cははるかに複雑ですマクロ、プリプロセッサ条件、インクルード、曖昧な構文、ベンダー固有の構文、シンボルテーブルの作成... Cパーサーが存在しない場合でも、広範な検証と使用を行っている既存のCパーサーを探します結果を処理するためにPythonを使いたいのであれば、問題はありませんが、解決のためにPythonを混乱させることはありません。 "" Pythonを使ったことがない "ということは、成功へとつながる良い兆候ではありません。 –

+0

... GCCXMLはCパーサーを含んでおり、その種類をエクスポートすることをお勧めしますあなたがXMLとして望むデータの –

答えて

17

は、Pythonのために利用可能なツールを解析するの広範なリストについてthis linkを見てみましょう。具体的には、Cコードの解析には、pycparser

7

などがあります。これを行う正しい方法は、gccなどの既存のコンパイラのフロントエンドとやりとりしてから中間表現を使用することです任意の言語で独自のパーサを作成します。

しかし、ダーラによって提案されているように、pycparserは良い代替品になる可能性があります。