JavaScript中的JavaScriptparsing器

我需要为JavaScript源代码添加一些轻量级的语法糖,并使用基于JavaScript的构build系统来处理它。 有没有用JavaScript编写的开源JavaScriptparsing器? 在V8或类似的高性能JavaScript实现上运行时它们是否合理快速?

感谢您提供任何指针!

UglifyJS (JS压缩器/ JavaScript中的美化器)包含一个完整的JavaScriptparsing器,它提供了一个简单的API。 它经过了严格的testing,并用于一些大型项目(WebKit)。

Crescent Fresh在评论中回答了这个问题:

JSLint包含用JavaScript编写的JavaScriptparsing器。 请参阅Douglas Crockford的JSlint约2712行开始parsing器。 JSLint的写入也处理HTML,所以你必须掩饰这些部分

在Javascript中最快的 Javascriptparsing器是esprima 。

它也给你

抽象语法树(AST)的明智格式,与Mozilla Parser API兼容

acorn是一个用JavaScript编写的非常快速的JavaScriptparsing器。 现在比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的parsing器API兼容,所以你可以使用escodegen从parsing树生成JavaScript。

它本身不是一个JavaScriptparsing器,但是有一个名为Jison的项目(比如Bison)来生成用JS编写的parsing器。

我已经看到在JavaScript中实现的唯一的metacircular解释器是Narcissus引擎。

它也是由Brendan Eich开发的,他们使用了很多SpiderMonkey特有的非标准扩展,我认为它不适用于V8。

Microsoft已经在TypeScript中开发了TypeScript编译器。 由于TypeScript是JavaScript的严格超集,并且TypeScript被编译为JavaScript,所以得到的编译器在技术上是用JavaScript编写的JavaScript编译器。

这当然取决于你的“编译器”的定义。 但是,如果接受A语言超集的编译器不是A语言的编译器,那就排除了GCC,Clang和几乎所有其他的编译器。

https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API

独立SpiderMonkeyshell的最新版本包括对SpiderMonkey分析器的反映,可作为JavaScript API使用。

请注意,这只是JavaScript中的一个API,parsing器是C ++。

JS / CC – 用JavaScript编写的LALR(1)parsing器和JavaScript语法分析器生成器 – http://jscc.phorward-software.com/