我需要在JavaScript源代码中添加一些轻量级语法糖,并使用基于JavaScript的构建系统对其进行处理。是否有任何用JavaScript编写的开源JavaScript解析器?在V8或类似的高性能JavaScript实现上运行时,它们是否相当快?
感谢您提供的任何指导!
我需要在JavaScript源代码中添加一些轻量级语法糖,并使用基于JavaScript的构建系统对其进行处理。是否有任何用JavaScript编写的开源JavaScript解析器?在V8或类似的高性能JavaScript实现上运行时,它们是否相当快?
感谢您提供的任何指导!
Answers:
Crescent Fresh在评论中回答了这个问题:
JSLint包含用JavaScript编写的JavaScript解析器。参见Douglas Crockford的JSlint,第2712行左右开始解析器。JSLint被编写为还处理html,因此您必须掩盖这些部分
橡子是用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。
https://developer.mozilla.org/zh-CN/docs/SpiderMonkey/Parser_API:
独立的SpiderMonkey shell的最新版本包括对SpiderMonkey解析器的反映,该解析器可以作为JavaScript API使用。
请注意,这只是JavaScript中的API,解析器是C ++。
JS / CC-用JavaScript编写的JavaScript的LALR(1)解析器和词法分析器生成器-http: //jscc.phorward-software.com/