如何修改python包的源代码_如何修改Python源代码以添加新的AST节点?
无需深入Python.asdl!然后你必须去寻找ASDL解析器然后你必须弄清楚如何处理它(尽管这本身就是一个值得做的练习).由于令人惊叹的ast模块,你可以留在Python中.这是他提供的一个例子,其中构建了AST并从头开始评估!import astnode = ast.Expression(ast.BinOp(ast.Str('xy'),ast.Mult(),ast.Num(3)))fixed
·
无需深入Python.asdl!然后你必须去寻找ASDL解析器然后你必须弄清楚如何处理它(尽管这本身就是一个值得做的练习).由于令人惊叹的ast模块,你可以留在Python中.
这是他提供的一个例子,其中构建了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, '', 'eval')
print eval(codeobj)
ast.NodeTransformer
如果要转换现有AST,请查看ast.NodeTransformer类.
以下是上述博客文章中的一个示例,它修改了字符串值
以str:为前缀
class MyTransformer(ast.NodeTransformer):
def visit_Str(self, node):
return ast.Str('str: ' + node.s)
更多推荐



所有评论(0)