In this book we will create a programming language together. We'll start with 0 lines of code and end up with a fully working interpreter for the Monkey* programming language.
Step by step. From tokens to output. All code shown and included. Fully tested.
Buy this book to learn:
How to build an interpreter for a C-like programming language from scratch
What a lexer, a parser and an Abstract Syntax Tree (AST) are and how to build your own
What closures are and how and why they work
What the Pratt parsing technique and a recursive descent parser is
What others talk about when they talk about built-in data structures
What REPL stands for and how to build one
Why this book?
This is the book I wanted to have a year ago. This is the book I couldn't find. I wrote this book for you and me. So why should you buy it? What's different about it, compared to other interpreter or compiler literature?
Working code is the focus. Code is not just found in the appendix. Code is the main focus of this book.
It's small! It has around 200 pages of which a great deal are readable, syntax-highlighted, working code.
The code presented in the book is easy to understand, easy to extend, easy to maintain.
No 3rd party libraries! You're not left wondering: "But how does tool X do that?" We won't use a tool X. We only use the Go standard library and write everything ourselves.
Tests! The interpreter we build in the book is fully tested! Sometimes in TDD style, sometimes with the tests written after. You can easily run the tests to experiment with the interpreter and make changes.
Why this book?
This book is for you if you...
learn by building, love to look under the hood
love programming and to program for the sake of learning and joy!
are interested in how your favorite, interpreted programming language works
never took a compiler course in college
want to get started with interpreters or compilers…
... but don't want to work through a theory-heavy, 800 pages, 4 pounds compiler book as a beginner
kept screaming "show me the code!" when reading about interpreters and compilers
always wanted to say: "Holy shit, I built a programming language!"
0 有用 poringking 2021-05-14 03:28:17
用c++写了一个,所有type都是value semantics,没有pointer乱飞。参考Sean Parent的cppcon talk: Better Code: Runtime Polymorphism https://github.com/versatran01/monkey-lang
0 有用 Pumpkin_Snail 2018-05-01 06:05:24
编译原理最佳实现
1 有用 Squirrel 2020-06-19 18:57:02
一直想以这种方式学习和分享,始终没能做到见到,读后一种理想照进现实的感觉。
4 有用 xiaohanyu 2020-12-26 15:46:19
市面上最好的教你如何写解释器的书,相较于本科课程侧重于 parser,以及各种编译原理侧重于自动机及文法理论,此书采用 go 语言及 TDD 的方式来从头构建一个解释器,对新手来说相当友好,非常容易上手。
0 有用 Lyrics 2024-05-14 10:18:08 美国
很好的一本入门书,test-driven development。跟着从头到尾敲了一遍,然后发现有很多其他的功能想要拓展实现哈哈。虽然书里给的代码命名不太符合工程规范,总的来说瑕不掩瑜。
0 有用 Lyrics 2024-05-14 10:18:08 美国
很好的一本入门书,test-driven development。跟着从头到尾敲了一遍,然后发现有很多其他的功能想要拓展实现哈哈。虽然书里给的代码命名不太符合工程规范,总的来说瑕不掩瑜。
0 有用 ggarlic 2023-05-22 17:40:46 北京
贯彻 TDD 的写法,哈哈
0 有用 Shing 2023-04-23 22:18:24 广东
侧重于 TDD 和简单入门 interpreter,整体跑下来非常不错
0 有用 脱臼 2023-03-17 09:31:17 河北
《猴子都能看懂的猴子语言解释器》。讲的非常明白,非常精彩!
0 有用 Hu# 2023-01-15 09:44:59 湖南
We started by building the lexer that turns strings entered into the REPL into tokens.After that, we built the parser, a top-down recursive-descent parser(often called a Pratt parser) that turns the t... We started by building the lexer that turns strings entered into the REPL into tokens.After that, we built the parser, a top-down recursive-descent parser(often called a Pratt parser) that turns the tokens into an AST. Then we built an evaluator. With func Eval recursively walks down the AST and evaluates it, using the object system to produce val. (展开)