前言
最近在分析微信小程序,需要统计以前代码中所使用过的wx.api。思路为对js文件进行语法分析,然后找出调用者为wx的成员表达式。
JavaScript语法解析
首先来看一下什么是抽象语法树。抽象语法树(Abstract Syntax Tree)也称为AST语法树,指的是源代码语法所对应的树状结构。也就是说,对于一种具体编程语言下的源代码,通过构建语法树的形式将源代码中的语句映射到树中的每一个节点上。
可以通过一个demo来看一下什么是AST。
js代码为
- var a = 1;
- function main() {
- console.log('this is a function');
- }
- main();
这段代码的AST长这样:
可以发现,代码被映射成了一颗语法树,有三个节点,不同语句映射成不同的节点。那么我们便可以通过操作语法树来准确的获得代码中的某个节点,对代码进行分析等。
Espsrima
Espsrima是一个较为成熟的JavaScript语法解析开源项目。使用Espsrima对js代码进行语法解析的步骤如下:
1. 准备环境
我们使用node来构建能够在命令行中运行的js代码。所以首先确保安装