大多数 JavaScript Parser 遵循 estree 规范,Babel 最初基于 acorn 项目(轻量级现代 JavaScript 解析器) Babel 大概分为三大部分:
1、解析:将代码转换成 AST(抽象的语法树)
2、词法分析:将代码(字符串)分割为 token 流,即语法单元成的数组
3、语法分析:分析 token 流(上面生成的数组)并生成 AST,转换:访问 AST 的节点进行变换操作生产新的 AST,以新的 AST 为基础生成代码(taro 就是利用 babel 完成的小程序语法转换,生成)
babel我们可以把他理解为一个编译器,也就是实现代码转换的功能,其转换过程分为三个阶段。
1、解析: 将js代码转换成AST(抽象语法树)
2、转化: 根据抽象语法树进行变换操作
3、生成: 将转换后的抽象语法树生成新的代码