네드 배첼더: 마이크로 언어 구현: 칼슘 노트

네드 배첼더: 마이크로 언어 구현: 칼슘

저는 Calcium이라는 아주 작은 언어 구현체를 작성했습니다. 이것은 Python과 같은 언어가 어떻게 구현되는지를 보여주기 위한 것입니다. 약 300줄의 코드로 토크나이저, 파서, AST, 컴파일러, 바이트코드, 실행 엔진을 모두 갖추고 있습니다. 저는 종종 "Python은 인터프리트되는 것이 아닌가? 왜 사람들이 컴파일된다고 말하는가?"라는 질문을 보기 때문에 이것을 만들었습니다. (참고로, 저는 이 질문에 대해 이전 블로그 게시물 "Python은 인터프리트되는 언어인가, 컴파일되는 언어인가? 그렇다."에서도 답했습니다.) 사람들이 "컴파일된다"는 것이 종종 의미한다고 생각하는, 즉 프로그램이 명시적인 네이티브 CPU 명령어 시퀀스로 변환되지 않는다는 것을 설명하기 어려울 수 있습니다. 그래서 저는 다음에 이 주제가 나올 때 참고할 수 있도록 Calcium을 코딩했습니다. 실행 엔진 코드가 바이트코드를 읽고 그것이 지시하는 바를 수행하는 것을 보여줄 수 있다면 도움이 될 것이라고 생각합니다. 또한 언어 구현을 가지고 놀고 싶어하는 사람들에게 흥미로운 시작점이 될 수도 있습니다. 거의 아무것도 없기 때문에 (주석?) 추가할 수 있는 간단한 것들이 많이 있습니다.