本文是对the-super-tiny-compiler仓库的翻译 , 原文章(代码):https://github.com/jamiebuilds/the-super-tiny-compiler/blob/master/the-super-tiny-compiler.js
今天我们一起动手写一个编译器 , 但不是我们平常所说的编译器 , 而是一个超级超级小的编译器 , 小到如果你把本文件的所有注释都删了 , 真正的代码也就200多行 。
我们将把lisp风格的函数调用编译成C风格的函数调用 , 如果你对这两个不熟悉的话 , 让我来简单介绍一下 。
如果我们有两个函数:add和subtract , 它们会写成下面的样子:
LISPC2 + 2(add 2 2)add(2, 2)4 - 2(subtract 4 2)subtract(4, 2)2 + (4 - 2)(add 2 (subtract 4 2))add(2, subtract(4, 2))是不是很简单?
很好 , 这就是我们要编译的 , 虽然这并不是一个完整的LISP或C语法 , 但是这小部分的语法足以向我们展示一个现代编译器的主要部分 。
大多数的编译器都会分成三个主要的阶段:解析(Parsing)、转换(Transformation)以及生成代码(Code Generation) 。
1.
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
