Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/windfarer/go-monkey-compiler
writing a compiler in go
https://github.com/windfarer/go-monkey-compiler
Last synced: 19 days ago
JSON representation
writing a compiler in go
- Host: GitHub
- URL: https://github.com/windfarer/go-monkey-compiler
- Owner: Windfarer
- Created: 2022-08-13T09:16:32.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-08-27T06:52:07.000Z (over 2 years ago)
- Last Synced: 2024-12-16T02:57:30.102Z (19 days ago)
- Language: Go
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Monkey Compiler
《用Go语言自制编译器》
https://www.ituring.com.cn/book/2882## CH1
介绍概念:编译器和虚拟机,以及项目目标## CH2
如果没有实现过Monkey解释器,需要下载随书的代码,把ast,lexer,parser,repl,token目录和main.go复制到项目下,
本项目需要复用解释器中的这部分解析ast的逻辑。这个章节定义了字节码指令,实现了最小的编译器原型,从源码编译出字节码,并且实现栈式虚拟机,把编译出的字节码扔到虚拟机里执行,输出结果。
实现了两个Op:Constant和Add,能够实现两个数的加法。
实现基于编译器和虚拟机的REPL,便于调试
主要时间在写测试的代码,单元测试对实现过程有很大帮助
## CH3
本章体力活占大多数,实现了栈清理、各种表达式和布尔类型。
整体流程很有节奏感:code中添加定义,compile中增加字节码的单元测试并实现,vm中增加执行结果的测试并实现。