使用Acorn来解析JavaScript

Talk

因为最近工作上有需要使用解析JavaScript的代码,大部分情况使用正则表达式匹配就可以处理,但是一旦依赖于代码上下文的内容时,正则或者简单的字符解析就很力不从心了,这个时候需要一个语言解析器来获取整一个AST(abstractsyntaxtree)。

然后我找到了多个使用JavaScript编写的JavaScript解析器:

Esprima

Acorn

UglifyJS2

Shift

从提交记录来看,维护情况都蛮好的,ES各种发展的特性都跟得上,我分别都简单了解了一下,聊聊他们的一些情况。

Esprima是很经典的一个解析器,Acorn在它之后诞生,都是几年前的事情了。按照Acorn作者的说法,当时造这个轮子更多只是好玩,速度可以和Esprima媲美,但是实现代码更少。其中比较关键的点是这两个解析器出来的AST结果(对,只是AST,tokens不一样)都是符合TheEstreeSpec规范(这是Mozilla的工程师给出的SpiderMonkey引擎输出的JavaScriptAST的规范文档,也可以参考:SpiderMonkeyinMDN)的,也就是得到的结果在很大部分上是兼容的。

现在很出名的Webpack解析代码时用的也是Acorn。

至于Uglify,很出名的一个JavaScript代码压缩器,其实它自带了一个代码解析器,也可以输出AST,但是它的功能更多还是用于压缩代码,如果拿来解析代码感觉不够纯粹。

Shift这个没做多少了解,只知道他定义了自己的一套AST规范。

Esprima







































哪家医院白癜风能治愈
中医治疗白癜风的医院



转载请注明:http://www.guyukameng.com/jbxx/jbxx/3297.html

  • 上一篇文章:
  •   
  • 下一篇文章: