예제 코드를 작성하고 이 코드가 컴파일러를 거쳐 바이트 코드로 바뀐 후 PVM에서 작동하는 과정을 따라가 보겠습니다.
코드 11-1 programming_language/test.py
def func(a, b): return a + b a = 10 b = 20 c = func(a, b) print(c)
실행결과 30
코드 11-1은 매우 간단합니다. 두 인자를 더해 반환하는 함수 func()와 두 전역 변수 a와 b가 있고, a와 b를 인자로 받아 func() 함수를 호출한 다음 c에 그 값을 저장하고 이를 print() 함수로 출력합니다. 실행하면 가장 먼저 컴파일러의 렉서가 코드의 문자들을 토큰으로 바꿀 것입니다. test.py가 어떤 토큰들로 변경되는지 확인해 보겠습니다.
>>> from tokenize import tokenize
>>> from io import BytesIO
>>> s = open('test.py').read()
>>> g = tokenize(BytesIO(s.encode('utf-8')).readline)
>>> for token in g:
print(token)