2013-05-06 70 views
0

你有什么想法如何合并两个使用python ast的asts?
我愿做这样的事情:Python AST - 合并两个AST

n1 = ast.parse(input_a) 
n2 = ast.parse(input_b) 
n = merge(n1,n2) 

我想创建根n,其中儿童的n1和n2。
在此先感谢

+0

不要你需要指定你节点类型?似乎这将高度依赖于'input_a'和'input_b'。例如, – mgilson 2013-05-06 19:33:34

+0

,两个输入都可以是函数的定义,我需要将这两个asts合并为一个。我不想一起调用AST解析器,因为如果其中一个是无效的,我没有得到任何输出... – Kapucko 2013-05-06 19:40:15

回答

1

看样子你可以这样做:

n1.body += n2.body 

但我无法找到任何地方记录。

样品:

>>> a=ast.parse("i=1") 
>>> b=ast.parse("j=2") 
>>> a.body += b.body 
>>> exec compile(a, "<string>", "exec") 
>>> print i 
1 
>>> print j 
2 
>>> 
+0

谢谢你的答案。它似乎对我有用! – Kapucko 2013-05-06 20:20:48

+0

嗨,我无法找到方法(body())。我正在使用index.parse('my_Input_file')创建翻译单元,解决方案中的ast是什么? – anoop 2017-04-15 23:52:46