2013-05-06 3 views
0

파이썬 ast를 사용하여 두 ast를 어떻게 병합 할 수 있습니까?
나는 같은 것을 할 싶습니다 :Python AST - 두 개의 AST 병합

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

나는 차일 N1과 N2와 루트 N을 작성하고 싶습니다. 당신이 할 수있는 표시를 미리

+0

당신은 당신이 가지고있는 노드의 유형을 지정해야하지? 이것은'input_a'와'input_b'에 크게 의존하는 것처럼 보입니다. – mgilson

+0

예를 들어, 두 입력 모두 함수의 정의 일 수 있으며이 두 가지를 하나로 병합해야합니다. 나는 그들 중 하나가 유효하지 않기 때문에, 나는 어떤 출력도 얻지 못하기 때문에 함께 파에서 ast 파서를 호출하고 싶지 않다 ... – Kapucko

답변

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

+0

안녕하세요, 방법 (body())을 (를) 찾을 수 없습니다. index.parse ('my_Input_file')을 사용하여 번역 단위를 만들었습니다. 솔루션의 ast는 무엇입니까? – anoop