𝗟𝗶𝘀𝗽 𝗜𝗻𝘁𝗲𝗿𝗽𝗿𝗲𝘁𝗲𝗿 작성법
프로그래밍 언어가 어떻게 작동하는지 배우면 깊은 지식을 얻을 수 있습니다. Python으로 Lisp 인터프리터를 만드는 것은 이를 확인하는 고전적인 방법입니다.
Peter Norvig는 2010년에 이 주제에 관한 유명한 가이드를 작성했습니다. 인터프리터 설계의 원칙은 변하지 않습니다. 코드가 어떻게 동작으로 변하는지 배우게 됩니다.
인터프리터는 세 가지 주요 단계를 따릅니다:
- 어휘 분석(Lexical Analysis): 원시 코드를 토큰으로 분해합니다. 토큰은 단어나 기호와 같은 작은 조각들입니다.
- 구문 분석(Syntactic Analysis): 토큰을 트리로 변환합니다. 이 트리는 코드의 구조를 보여줍니다.
- 평가(Evaluation): 트리를 따라 연산을 수행하고 결과를 얻습니다.
Lisp은 이 과정을 단순하게 만듭니다. S-표현식(S-expressions)을 사용하기 때문입니다. 이는 모든 것이 괄호 안의 리스트임을 의미합니다. 첫 번째 항목은 대개 함수이며, 나머지는 인자(arguments)입니다.
시작하려면, (+ 10 (* 2 5))와 같은 코드를 토큰으로 변환합니다.
토큰은 다음과 같습니다: '(', '+', '10', '(', '*', '2', '5', ')', ')'
이러한 핵심 메커니즘을 공부하면 매일 도구를 사용하는 방식이 달라집니다.