単純な言語を表すツリーを作成しています。私は抽象構文木に精通しており、C++ でそれらを構築して使用するためのフレームワークに取り組んできました。任意の AST を指定または操作するための標準の Python ライブラリはありますか? それができない場合、同じ目的に役立つツリーライブラリはありますか?
注、私はPython ASTを操作していないので、AST モジュールは適切ではないと思います。
単純な言語を表すツリーを作成しています。私は抽象構文木に精通しており、C++ でそれらを構築して使用するためのフレームワークに取り組んできました。任意の AST を指定または操作するための標準の Python ライブラリはありますか? それができない場合、同じ目的に役立つツリーライブラリはありますか?
注、私はPython ASTを操作していないので、AST モジュールは適切ではないと思います。
Python での AST の実装は非常に簡単です。たとえば、私のpycparserプロジェクト (Python の完全な C パーサー) では、Python のモジュールから借用したアイデアに基づいて AST を実装しました。さまざまな AST ノードが YAML 構成ファイルで指定され、Python 自体でこれらのノードの Python コードを生成します。
文法要素をpyparsingの式として表す場合は、各式に解析アクションをアタッチして、解析されたトークンをパーサー固有の型で含むクラスインスタンスを返すことができます。pyparsing wikiには、この手法を説明するいくつかの例があります(invRegex.py、simpleBool.py、evalArith.py)。(これらの文法はすべて、組み込みのoperatorPrecedenceを使用します。これにより、文法構造の一部がわかりにくくなる可能性がありますが、
このブログ エントリでは、実装の詳細は省略されていますが、Python AST で実装できる優れたインターフェイスについて説明しています。
http://chris-lamb.co.uk/2006/12/08/visitor-pattern-in-python/