使用 Crockford 的JSLINT,在调用JSLINT()
解析一些 JavaScript 源代码后,它通过以下方式提供对解析树的访问JSLINT.tree
能够分析树,根据分析对其进行结构更改,然后从修改后的树生成新的 JavaScript,这将是非常强大的。
是否有一个基于 JSLINT 的开源项目,提供从解析树到 JavaScript 的转换?
(这甚至可能吗,即 JSLINT 是否保留了从解析到往返所有重要信息的足够完整信息?)
使用 Crockford 的JSLINT,在调用JSLINT()
解析一些 JavaScript 源代码后,它通过以下方式提供对解析树的访问JSLINT.tree
能够分析树,根据分析对其进行结构更改,然后从修改后的树生成新的 JavaScript,这将是非常强大的。
是否有一个基于 JSLINT 的开源项目,提供从解析树到 JavaScript 的转换?
(这甚至可能吗,即 JSLINT 是否保留了从解析到往返所有重要信息的足够完整信息?)
不是开源的,但完全符合 OP 的要求:我们的JavaScript 前端。
该前端基于我们的DMS 软件再造工具包,这是一种通用的可定制编译器技术,可用于构建任意代码分析器和转换器。DMS 有许多可用于多种语言(COBOL、Java、C++、...)的前端
特别是,基于 DMS 的解析器(包括它的 JavaScript 解析器)收集完整的信息以重新生成源树,包括标记的列开始和结束信息、数字文字的基数、字符串引用约定的差异等,以使其能够在未应用任何转换的情况下进行保真打印。DMS 还为树处理提供了许多其他有用的服务,例如访问者、符号表构建支持、流分析支持、模式匹配以及源到源转换。
它可以提供所有这些服务,因为它的工程成本已在许多语言和应用程序中分摊。
我们这样做是因为正如丹尼尔所说,“可能性是无限的”。他给出了一个检测代码以监视运行时故障的示例;这种仪器是一个非常有用的想法,我们正是基于这种想法构建了测试覆盖工具。