タイトルでは、3つの異なる言語について言及していますが、それらのいずれかでプログラムの識別子のリストを提供できるpythonパッケージが存在するかどうかを確認したいと考えています。そのようなものがあるとは思えないので、3 つすべてである必要はありません。したがって、私の質問は、言語の特定のプログラムの識別子のリスト、できればタイトルにリストした3つの識別子のリストを取得できる関数またはクラスがPythonに存在するかどうかです。どんな助けでも感謝します。
質問する
285 次
2 に答える
1
一般に、ほぼ完全な言語実装がなければ、これは不可能です。
C には初歩的なプリプロセッサがあり、アドホック スキャンから関数宣言をマスクすることができます。Lisp には強力なメタプログラミングがあります。これは、フル機能の Lisp コンパイラを使用してのみ定義を抽出できることを意味し、単純な解析はまったく役に立ちません。
Scala はこれら 3 つの中で最も単純ですが、それでも構文が肥大化しすぎており、少なくとも完全なパーサーが必要です。Python は、このようなことを行うための適切なツールとは言えません。
于 2012-05-01T11:51:57.160 に答える
1
コードから C AST を生成し、それをトラバースして必要なものを取得するために使用できるpycparserがあります。
Python には、この単純な Lisp インタープリターがあり、そこからパーサーを削除できるはずです。
また、Scala でこれに似た、すぐに利用できるものはないと思いますが、plyのようなものを使用してパーサーを作成できます。それほど簡単ではありませんが、うまくいきます。
于 2012-04-30T13:52:33.363 に答える