私は最近、Python ソース コードの静的解析に取り組んでいます。私たちのグループには、すでに CIL(C Intermediate Language) 用の Ocaml で書かれた静的アナライザーがあります。このアナライザーを再利用したいので、理想的なアプローチは Python を CIL に変換することです。
現在、Python 組み込みの ast モジュールを使用して、Python を Python AST に解析しています。次に、ast.dump が出力した Python AST を C AST に変換します。C AST から CIL API および静的アナライザーはすべて Ocaml で記述されていることを考慮してください。Ocamllex&Ocamlyacc を選択して、Python AST を C AST に解析します。ただし、いくつかの大きな問題があります。
ast.dump が出力した AST 表現を特定するのは困難です。そのため、パーサーの実装が容易ではありません。一方、Ocaml を使用して Python の ast 内部構造にアクセスすることはできません。とはいえ、Ocamlとはデータ構造が違う。
Python コードから C AST への変換で最初に間違ったアプローチを選択したのではないでしょうか? 私の要件を満たす可能性のある他の既存のツールまたはアプローチはありますか?
私が見逃しているものがあれば、私にとって多くの助けになることを指摘してください. ありがとう。