발생자(generator)는 함수를 실행 도중에 멈췄다가 원하는 시점에 다시 시작할 수 있도록 하는 함수입니다. 여기서는 walk() 함수를 통해 만들어진 발생자 객체가 next() 함수를 호출할 때마다 노드를 하나씩 넘겨준다는 점만 기억하면 됩니다.
발생자를 만든 다음 next() 함수를 통해 노드를 하나씩 획득하고 있습니다. 이렇게 봐서는 트리가 어떻게 구성되어 있는지 알기 어렵습니다. 함수 func()의 정의 부분만 따로 떼어낸 트리 구성을 살펴보겠습니다. 다음은 함수 func()의 정의 부분입니다.
def func(a, b):
return a + b
이 코드의 추상 구문 트리를 그림으로 나타내면 그림 11-4와 같습니다.
그림 11-4 함수 func의 추상 구문 트리