商标查询
JavaScript黑科技:实现一个AST解释器
发布日期:2022-05-12 21:57   来源:未知   阅读:

  一段JavaScript代码,经过语法分析、语法分析等编译过程之后,会形成一个对应的AST(抽象语法树),形如:

  AST是一个JSON格式的大字符串,包含有代码相关信息,如:成员表达式调用、参数、标识符、字符串字面量等等。如:

  其实,如果直接要输出这样一个字符串,在JavaScript中是极为简单的,只需简单的一句:console.log(jshaman)。

  其意义在于:我们将要实现一个AST解释器,引申而言,实现一个JavaScript解释器。在很多场景中,具有非常实用的意义。

  比如,在小程序中屏蔽了Eval函数,而如果我们自己实现解释器,将可突破这个限制。

  又比如,JShaman研发团队中,将它用于JavaScript代码加密。

  当遇到CallExpression时,获取其对应的参数、方法名等,如下图:

  编码时,对照着AST节点类型,完成相应的操作即可,为方便调试,可输出节点类型加以分析,如下图:

  完整源码如下,保存为JS,在NodeJS环境中即可运行。也可在浏览器中直接运行代码,更为方便。

  以上代码中,使用的是简化过的AST。astexplorer默认生成的AST,内容较多,如下图:

上海强田液压股份有限公司主营产品有多路阀、负载敏感多路阀、工程机械、行走液压等高品质液压件和电气控制类产品