2012-04-30 8 views
1

私は3つの異なる言語について言及していますが、Pythonパッケージが存在するかどうかを知りたいのですが、それらのいずれかのプログラムの識別子のリストを私に与えることができます。私はそれがそういうものがあるとは思っていないので、それらの3つすべてである必要はありません。ですから、私の質問は、関数やクラスがPythonに存在しているため、特定のプログラムの識別子リストを取得できます。どんな助けもありがたい。プログラム(C、Scala、Lisp)の識別子を解析するためのPythonパッケージ?

+0

もっと文脈を教えてください。 C、Scala、またはLispプログラムを解析して識別子のリストを出力するPythonプログラムを作成したいと思うようですが、この質問から100%明確ではありません。 –

+0

私は体の中でタイトルを繰り返すことに何のポイントも見ませんでしたが、あいまいさを謝ります。私は、Pythonでそれをすることが存在することをもっと望んでいました。そうでなければ、私はそのことを知りたいと思います。 – Andy

+0

あなたはPythonパッケージを探しています。私の編集を参照してください。 –

答えて

1

一般的に、これはほぼ完全な言語実装がなければ不可能です。

Cには、アドホックスキャンの関数宣言をマスクするための初歩的なプリプロセッサがあります。 Lispには強力なメタプログラミングがあります。つまり、フル機能のLispコンパイラを使って定義を抽出することができます。単純な構文解析はまったく役に立ちません。

Scalaはこれら3つの中で最もシンプルですが、構文はまだまだ肥大しており、少なくとも完全なパーサーが必要です。 Pythonは、このようなことを何らかの形で行うための適切なツールではありません。

1

pycparserがあります。これを使用してコードからC ASTを生成し、それをトラバースして必要なものを得ることができます。

this simple lisp interpreterは、パーサーをスクラップできるようにするPythonにあります。

私はScalaにとって似ていて容易に利用できるとは思っていませんが、plyのようなものを使ってパーサーを作ることができます。それは簡単ではありませんが、そうするでしょう。

+0

そうです、私はプライを見ていましたが、そのチュートリアルを行うのは難しいです。しかし、入力のおかげで。 – Andy

+0

チュートリアルよりも簡単な例があります。 –

関連する問題