1

タイトルでは、3つの異なる言語について言及していますが、それらのいずれかでプログラムの識別子のリストを提供できるpythonパッケージが存在するかどうかを確認したいと考えています。そのようなものがあるとは思えないので、3 つすべてである必要はありません。したがって、私の質問は、言語の特定のプログラムの識別子のリスト、できればタイトルにリストした3つの識別子のリストを取得できる関数またはクラスがPythonに存在するかどうかです。どんな助けでも感謝します。

4

2 に答える 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 に答える