这一个关于如何用JavaScript实现一门编程语言的教程。如果你曾经写过解释器或者编译器,这个教程你可能学不到什么新的东西,但是,如果你正在用正则表达式去 “解析”任何看起来看起来像编程语言的东西,那你可以跳过直接去看解析的部分。
在这个教程中我们可以学到什么?
什么是解析器,如何编写一个解析器。
如何编写一个解释器。
连续(Continuations)为什么它这么重要。
编写一个编译器。
如何将代码转变成连续传递格式(continuation-passing style)。
一些基本的优化。
我们的新语言(λanguage)在普通JavaScript基础上的一些新特性。
我们还将讨论Lisp为什么是很牛逼的编程语言。但是我们的新语言并像Lisp。它的语法更丰富,除了宏命令,它和Scheme一样强大。
不管怎么样,让我们开始实现我们的新语言吧!