我需要向 JavaScript 源代码添加一些轻量级的语法糖,并使用基于 JavaScript 的构建系统对其进行处理。有没有用 JavaScript 编写的开源 JavaScript 解析器?在 V8 或类似的高性能 JavaScript 实现之上运行时,它们是否相当快?
感谢您提供的任何指示!
我需要向 JavaScript 源代码添加一些轻量级的语法糖,并使用基于 JavaScript 的构建系统对其进行处理。有没有用 JavaScript 编写的开源 JavaScript 解析器?在 V8 或类似的高性能 JavaScript 实现之上运行时,它们是否相当快?
感谢您提供的任何指示!
UglifyJS(JavaScript 中的 JS 压缩器/美化器)包含一个完整的 JavaScript 解析器,它公开了一个简单的 API。它在一些大项目 (WebKit) 中经过了大量测试和使用。
Crescent Fresh在评论中回答了这个问题:
JSLint 包含一个用 JavaScript 编写的 JavaScript 解析器。参见Douglas Crockford 的 JSlint大约第 2712 行开始解析器。JSLint 被编写为也处理 html,所以你必须掩盖这些部分
acorn是一个用 JavaScript 编写的非常快速的 JavaScript 解析器。现在它甚至比esprima还要快。我在 Chrome 表单esprima 的速度比较页面中得到的结果:
Source Esprima UglifyJS2 Traceur Acorn
Underscore 1.4.1 15.1 23.8 14.2 7.6
Backbone 1.0.0 17.1 30.2 16.7 7.9
jQuery 1.9.1 241.1 247.2 125.4 81.4
Total 273.3 ms 301.2 ms 156.3 ms 96.9 ms
它与 Mozilla 的 Parser API 兼容,因此您可以使用escodegen从解析树生成 JavaScript。
它本身不是一个 JavaScript 解析器,但有一个名为Jison(如 Bison)的项目,用于生成用 JS 编写的解析器。