从JSLINT解析树生成JavaScript

时间:2012-02-04 09:17:16

标签: javascript parsing jslint roundtrip

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

能够分析树,根据分析对其进行结构更改,然后从修改后的树中生成新的JavaScript,真的很有用。

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

(这是否可能,即JSLINT是否保留了完整的解析信息,以便将重要事项全部转发?)

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

这个前端基于我们的DMS Software Reengineering Toolkit,它是用于构建任意代码分析器和变换器的通用可定制编译器技术。 DMS有许多前端可用于多种语言(COBOL,Java,C ++,...)

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

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

我们这样做是因为丹尼尔说,“可能性是无限的”。他给出了一个示例,用于检测代码以监视运行时故障;这种仪器是一个非常有用的想法,we build test coverage tools based on exactly this thought.