解析とバイトコード生成の間に、多くの有効なオペレーションが行われますが、最も単純なオペレーションは何もしないことです。この目的の為に、中間データ構造を作るためにparserモジュールを使用するのは、このコードと同等です。
>>> code = compile('a + 5', 'eval') >>> a = 5 >>> eval(code) 10
parserモジュールを使う同等のオペレーションはやや長く、中間の内部解析木を、ASTオブジェクトとして保持します。
>>> import parser >>> ast = parser.expr('a + 5') >>> code = parser.compileast(ast) >>> a = 5 >>> eval(code) 10
ASTオブジェクトとコードオブジェクトの両方を必要とするアプリケーションは、このコードを容易に簡単な関数内に入れることができます。
import parser def load_suite(source_string): ast = parser.suite(source_string) code = parser.compileast(ast) return ast, code def load_expression(source_string): ast = parser.expr(source_string) code = parser.compileast(ast) return ast, code