まだ飛び込む必要はありませPython.asdl
ん!次に、ASDLパーサーを探し回ってから、それをどうするかを理解する必要があります(ただし、これはそれ自体が価値のある演習です)。ast
すばらしいモジュールのおかげで、Python内にとどまることができます。
この問題に関するEliBenderskyの記事を必ずチェックしてください。
eval
これは、ASTが構築され、ゼロから作成された場所で彼が提供する例です。
import ast
node = ast.Expression(ast.BinOp(
ast.Str('xy'),
ast.Mult(),
ast.Num(3)))
fixed = ast.fix_missing_locations(node)
codeobj = compile(fixed, '<string>', 'eval')
print eval(codeobj)
ast.NodeTransformer
ast.NodeTransformer
既存のASTを変換する場合は、クラスを確認してください。
これは、上記のブログ投稿の例で、文字列値の先頭に。を追加するように変更していますstr:
。
class MyTransformer(ast.NodeTransformer):
def visit_Str(self, node):
return ast.Str('str: ' + node.s)