暑假的时候曾经翻译过一篇很不错的关于编译器的文章: 用 JavaScript 写一个超小型编译器 但这篇文章真的太简略了,其中编译器前端最重要的文法分析只是一笔带过,没有介绍任何理论和方法,虽然最后确实实现了一个超简单的编译器,但我感觉还远远不够。 这段时间闲着没事的时候去详尽地学了学编译原理,自己也实现了一个很简单的编译器(至少比上面那个稍微复杂一点),所以就用这篇文章记录一下吧。 当然我自己水平有限,肯定不如专门做编译器的巨巨那样熟悉西方的那一套的理论,所以这篇文章面向的读者大概是『没系统接触过编译原理的、看得懂 JavaScript 的程序员』。