经典的编译器设计
选自
《JavaScript编译器如何工作》http://blog.jobbole.com/41184/
简单编译器是怎么工作的
JavaScript被认为是高级语言,这意味着它是人类可读的并且具有高度的灵活性。编译器的工作是把高级语言转换成计算机本地指令。
一个简单的编译程序有四个处理过程:词法分析器、解析器、翻译器、解释器。
- 1. 词法分析器(或者说是扫描器,分词器),扫描源码并把它转换为原子单位,称为记号。最常见的实现是使用正则表达式进行模式匹配。
- 2. 被标记化之后的代码被传入解析器,解析器对代码结构和作用范围进行识别和编码,生成语法树。
- 3. 这种类似图的结构之后被传入翻译器翻译成字节码。其中最简单的实现是把一个庞大的switch语句标记映射成等价的字节码。
- 4. 然后字节码被传入字节码解释器,被转换为本机代码。
这是经典的编译器设计,已经存在了很多年。但是桌面程序和浏览器的要求有很大不同。这种经典的结构在多个方面都有缺陷。解决这些问题的创新方式,是浏览器的速度竞赛故事。


浙公网安备 33010602011771号