私はPythonで簡単なミニ言語パーサーを作成し、問題のドメインに近いプログラミングをしています。Pythonのミニ言語
とにかく、ここにいる人々がどうやってこのようにするのだろうと思っていたのですが、このようなことをPythonでやっているのはどういうことでしょうか?
現時点では、このフィールド全体がPythonでどれほど簡単かを調べているので、私は何をしているのかについて具体的な詳細を述べません。
ありがとうございました!
私はPythonで簡単なミニ言語パーサーを作成し、問題のドメインに近いプログラミングをしています。Pythonのミニ言語
とにかく、ここにいる人々がどうやってこのようにするのだろうと思っていたのですが、このようなことをPythonでやっているのはどういうことでしょうか?
現時点では、このフィールド全体がPythonでどれほど簡単かを調べているので、私は何をしているのかについて具体的な詳細を述べません。
ありがとうございました!
Pyparsingは、「小さな言語」を書くのに便利です。私は、単純なアドベンチャーゲームエンジンを書くのにpresentation at PyCon'06を与えました。このゲームエンジンでは、解析され、解釈される言語がゲームコマンドセット(「インベントリ」、「剣」、「ドロップブック」など)でした。 (ソースコードhere)
また、他のpyparsing記事へのリンクは、pyparsing wiki Publications pageで見つけることができます。
Pyparsingは本当に素晴らしいライブラリです、あなたは次の解析することができます最小の儀式で何かに。私はそれを使用して2つの午後に再帰的なPHPパーサー(静的なコード分析)を構築しました。私はそれを強く推薦することができませんでした。ドキュメントの読み込みには約2時間かかります。 –
私はPLY(Python Lex-Yacc)に限られていますが、肯定的な経験があります。これは、単一のPythonクラスにLex and Yaccの機能を組み合わせています。あなたはそれをチェックしたいかもしれません。
フェローStackoverflow'er Ned Batchelderは、彼のウェブサイトに利用可能なツールのnice overviewを持っています。 Python website自体の概要もあります。
Pythonは非常にシンプルで拡張性の高い言語であり、包括的なPythonモジュールを作成してそれをコーディングすることをお勧めします。
私が上にタイプアップしている間に、PLY
はすでに言及されています。
funcparserlib
をお勧めします。これは、特に小さな言語やDSLを解析するために書かれたもので、pyparsing
(ホームページの統計情報を参照)よりも速くて小さいものです。最小限の機能を持つプログラマーはfuncparserlib
が好きです。
編集:ところで、私はこの図書館の著者ですので、私の意見は偏っているかもしれません。
私は、私のpyparsingモジュールの宣伝や宣伝に消極的でした。恥ずかしそうではありません! Ned Batchelderに、彼のパーサの概要ページに 'funcparserlib'を追加してもらうようにしてください。これは、多くのPythonユーザが解析ライブラリを検索するための共通の(そして貴重な)リソースです。 – PaulMcG
@Paulアドバイスありがとうございました:) –
非常に便利なライブラリと思われ、コードは非常に明確です。ありがとう! –
私に今これを聞いたら、私はPython用のtextxライブラリを試してみましょう。あなたは非常に簡単にPythonでdslを作成することができます!利点は、それがあなたのためのASTを作成し、レキシングと解析が組み合わされることです。同様に
:http://stackoverflow.com/questions/2945357/python-how-best-to-parse-a-simple-grammar –