1ebec223e0dc2bae61abe9e74683776c65fd7152b01bf132636c403215017d6d16f62326c16a82ffcd


어쩌다가 보게됐는지는 기억이 안 나는데 https://norvig.com/lispy.html
여기서 파이썬으로 인터프리터 구현하는데 100줄대 밖에 안 나오는 거 보고 해볼만 할거 같아서 시작했음.

아직 컴파일러 안 배워서 막연하게 언어 구현하는건 어려울 줄 알았는데 guile 튜토리얼에 인터프리터 구현 있는 거 보고 충격받았음.
진짜 문법이 단순하니까 뭐 파싱이랄게 없는 수준이더라.
처음에는 레퍼런스 카운팅이면 되겠지 하고 안일하게 생각했는데 함수 define 하면 env랑 순환참조 생긴다는 걸 뒤늦게 깨달음.
그래서 뒤늦게 덕지덕지 gc 추가해서 코드는 누더기임.
일단 valgrind에서 누수는 안 뜨는데 repl에서 가끔 segfault나는건 원인을 모르겠음.
처음 readline 테스트 할 때부터 그러는 거 보면 내가 readline을 잘못 쓰고있는 거 같은데
어차피 취미로 시작한 거고 원주율 계산 되는 것까지 봤으니 여기까지만 하려고 함.

진짜 어디 보여주기도 민망한 코드지만 얘기할 데가 없어서 여기라도 올려봄.