6

使用 Crockford 的JSLINT,在调用JSLINT()解析一些 JavaScript 源代码后,它通过以下方式提供对解析树的访问JSLINT.tree

能够分析树,根据分析对其进行结构更改,然后从修改后的树生成新的 JavaScript,这将是非常强大的。

是否有一个基于 JSLINT 的开源项目,提供从解析树到 JavaScript 的转换?

(这甚至可能吗,即 JSLINT 是否保留了从解析到往返所有重要信息的足够完整信息?)

4

2 回答 2

3

我不知道 JSLint 是否可以做到(查看一些论坛帖子,看起来维护树并不是他们的目标,而是进行 linting 过程的副产品)。

uglifyjs项目可能有助于从 javascript 生成 AST并将AST 重新转换为代码。请参阅方法将 AST 转为 javascript。

于 2012-02-04T12:28:12.483 回答
1

不是开源的,但完全符合 OP 的要求:我们的JavaScript 前端

该前端基于我们的DMS 软件再造工具包,这是一种通用的可定制编译器技术,可用于构建任意代码分析器和转换器。DMS 有许多可用于多种语言(COBOL、Java、C++、...)的前端

特别是,基于 DMS 的解析器(包括它的 JavaScript 解析器)收集完整的信息以重新生成源树,包括标记的列开始和结束信息、数字文字的基数、字符串引用约定的差异等,以使其能够在未应用任何转换的情况下进行保真打印。DMS 还为树处理提供了许多其他有用的服务,例如访问者、符号表构建支持、流分析支持、模式匹配以及源到源转换。

它可以提供所有这些服务,因为它的工程成本已在许多语言和应用程序中分摊。

我们这样做是因为正如丹尼尔所说,“可能性是无限的”。他给出了一个检测代码以监视运行时故障的示例;这种仪器是一个非常有用的想法,我们正是基于这种想法构建了测试覆盖工具。

于 2012-02-04T16:43:34.523 回答