問題タブ [pycparser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2135 参照

python - PycParser を使用して ac ファイルを解析しながら、入力パラメーターとその識別子の型を抽出する

注: pycparser に精通している人は、問題をよりよく理解できます。

私はpycparser v2.10を使用しており、Cファイルで定義されているすべての関数を抽出しようとしており、そのCファイルを解析しながら入力パラメータ名と識別子の型を抽出しようとしています(pycparserを使用)。

コードサンプル

ここでは、visit_FuncDef で関数名を出力し、次に for ループでパラメーターを出力しています。

問題は、 for ループを使用して関数に渡された入力パラメーターの名前を取得できますが、 for ループでparams.name使用してその識別子の型を取得できないことです。params.type

パラメータの識別子を抽出する方法を誰か教えてもらえますか?

ところで、出力は次のようになります。

ご覧のとおり、識別子の型を取得する代わりに、各行でオブジェクトの型を取得しています。例えば<pycparser.c_ast.PtrDecl object at 0x00000000024EFC88>

テストファイルとして使用しているサンプルhash.cファイル(とにかくpycparserにすべてあります):

0 投票する
1 に答える
299 参照

python - python pyparser が #pragma ディレクティブで失敗する

Python C パーサー pycparser は、次の #pragma ディレクティブで失敗します。

エラーが発生します:

この #pragma の何が問題になっていますか?

0 投票する
2 に答える
954 参照

pycparser - 解析木を文字列に変換する

PycParser を使用して C 関数の抽象構文ツリーを生成しましたが、解析ツリーを文字列に変換する方法をまだ見つけようとしています。

生成された解析ツリーから文字列 (または文字列の配列) を生成することは可能でしょうか?

これは出力された抽象構文ツリーですが、文字列に変換する方法がわかりません。

0 投票する
1 に答える
1023 参照

python-2.7 - 私のC関数を理解するためにPycparserを作る方法

C コードの解析に pycparser を使用しています。スクリプトを実行すると、pycparser が関数を理解できず、以下のようなエラーがスローされます。

それが示す行番号は、このような関数に他なりません

私の機能を理解するためにpycparserを作成する方法を誰か教えてもらえますか?

0 投票する
1 に答える
1483 参照

pycparser - #含む
pycparser で

pycparser を使用すると、解析したい C コードに含まれるヘッダーで問題が発生しました。不思議な理由で、一部の「偽のヘッダー」は正常に機能し、他のものは同様に機能しません。たとえば、stdint.h をインクルードすると、pycparser は問題なくコードを解析できます。ただし、stdio.h で試してみると、エラーが発生します。そのため、pycparser で指定されたサンプル コード (サンプル フォルダー内の_gcc_E_libc.py を使用) は機能しません。

これは、引用されたサンプルコードで使用されているものです:

これは私が得るエラーです:

なぜこれが起こるのか、どうすれば解決できるのかを誰かが理解するのを手伝ってくれますか?

前もって感謝します !

0 投票する
2 に答える
1940 参照

python-2.7 - Pycparser が前処理されたコードで動作しない

前処理された C コード (「gcc -E」によって生成された結果) で pycparser を使用する必要があります。ただし、現在、理解または解決できない問題に直面しています。

提供されたサンプル year2.c と func_defs.py を使用しています。これを変更して、さまざまなプリプロセッサと偽のライブラリを使用しても無駄です。おそらく、これを調べて、問題を再現/解決できるかどうかを確認できる人もいます。必要なすべてのコードを追加します。

エラーは year2.c (通常のサンプル ファイル) と year2.i ('gcc -E' 出力) を使用して生成されました。前者はプリプロセッサ/fakelib の両方のバリアントで動作しましたが、後者には有用な結果はありませんでした。

関連するすべてのエラー、使用されたスクリプト (最後のバリエーションのみではありますが)、および year2.c ファイルと year2.i ファイルを含む bitbucket リポジトリを作成しました。

エラーとサンプルレポ

御時間ありがとうございます。

0 投票する
3 に答える
2622 参照

python - PythonでC形式の文字列を解析するにはどうすればよいですか?

C ファイルに次のコードがあります。

"%s"Python を使用して、フォーマット文字列を解析し、 andを見つけられるようにしたいと考えています"%d"

だから私は機能が欲しい:

libclang の Python バインディングと pycparser を使用してこれを達成しようとしましたが、これらのツールでこれを行う方法がわかりませんでした。

これを解決するために正規表現を使用することも試みましたが、これはまったく単純ではありませprintf"%%s"

gcc と clang の両方が明らかにコンパイルの一部としてこれを行います - このロジックを Python にエクスポートした人はいませんか?

0 投票する
1 に答える
302 参照

python - Pythonのpycparserライブラリで解析エラーを回避する方法はありますか

以下のコードは、.c ファイルpycparserを解析しようとするとエラーを引き起こします。これはrf_wcdma_bup_flags_t、定義された typedef ではないことが原因である可能性があります。スキップする方法はありますか?