타입스크립트로 만드는 인터프리터 언어
밑바닥부터 만드는 인터프리터 in Go
- go 언어로 쓰인 인터프리터 책을 읽고 타입스크립트로 포팅해보는 프로젝트입니다.
- 인터프리터에 관심 있고, go 보다는 타입스크립트에 더 익숙한 사람들을 위한 학습 자료를 만들고싶어 시작했습니다.
- 언어적 차이가 있고, go 언어에 능숙하지 않아 책과 다르게 작성된 부분들이 존재합니다.
자바스크립트는 왜 그모양일까?
에서 영감을 받아, 클래스 없는 타입스크립트 방법으로 작성해보았습니다.- this 를 한번도 사용하지 않을 수 있다는 장점이 있었습니다.
- 모든 함수를 팩토리처럼 사용하게 되는데, typescript 에서 내부 state 를 다루는데 불편함이 있었습니다.
- 함수의 리턴값을 인스턴스의 타입으로 생각하면서 작성했습니다.
- 작성하면서 느낀점은, typescript 에서는 그냥 class 문법으로 사용하는게 더 편한것 같습니다.(해당 방법을 유지하면서 더 좋은 구조가 없는지 고민중입니다)
- token (step1)
- lexer (step2)
- repl (step3)
- parser (step4)
- 작업중 ...
- types
- util
yarn test
명령어를 통해 실행되는 테스트에 숫자가 적혀있습니다(ex-> 토큰테스트(1))- 해당 숫자는 코드가 구현된 순서를 나타냅니다.
- 작은 숫자부터 큰 숫자로 따라가면서 테스트를 실행해보고, 코드를 이해할 수 있도록 작성했습니다.
- 수정하거나 더 나은 방식이 있다면 언제나 pr 날려주세요.
- 수정한 부분이 있다면 테스트 코드 또한 작성해주세요.