더북(TheBook)

예제 코드를 작성하고 이 코드가 컴파일러를 거쳐 바이트 코드로 바뀐 후 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)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.