4

Mozilla 提供了一个用于解析 Javascript 模块以生成抽象语法树的 API 。他们称之为Reflect.parse

是否有一个 Reflect.parse 或类似的东西,用 Javascript 编写为一个独立的模块?我可以在任何 ES5 引擎上运行以生成语法树吗?失败的是,C++ 中有一个独立的工具可以为我做这件事吗?还是服务?


我尝试了 doctorjs.org 的一个非常简单的自我评估匿名函数,但它窒息了。我做错了吗?

(function (scope) {
  ....
}(this));
4

4 回答 4

4

试试 Esprima ( esprima.org ),这是我几个月前开始的一个项目。它的 AST 输出与 Mozilla Reflect.parse 兼容,它几乎可以在从 IE 6 到 Node.js 的任何地方运行,解析器非常快(在其竞争对手中最快),经过大量单元测试(500+ 并且还在增长),代码覆盖率为 100% .

Esprima 符合 ES5(包括严格模式),甚至还有 WIP 以支持 ES6(和 Harmony)功能。众所周知,可以毫无问题地解析大量 JavaScript,从 jQuery 等标准库到百万行 Web 应用程序代码。

于 2012-04-27T04:23:19.917 回答
4

查看 Esprima:http ://esprima.org/

这里有一个生成类似抽象语法树的单独项目:http: //boshi.inimino.org/3box/PanPG/build/js_ast.html

于 2012-04-24T17:21:38.220 回答
2

JS.js(用 Javascript 编写的 Javascript 解释器)可能有一个 Javascript 解析器作为组件,但我不知道从外部访问或使用它有多容易。

于 2012-04-24T04:04:21.953 回答
0

我可以在任何 ES5 引擎上运行以生成语法树吗?失败的是,C++ 中有一个独立的工具可以为我做这件事吗?

您可以获取源代码并构建 SpiderMonkey JavaScript 独立 shell(Mozilla 的 Firefox 中的 JS 引擎),它内置了 Reflect.parse,因此您可以制作一个包含 SpiderMonkey 功能的小脚本,该脚本可用作工具。

于 2012-04-26T04:41:56.223 回答