Skip to content

AST 抽象语法树

  • AST(Abstract Syntax Tree,抽象语法树)是源代码的抽象语法结构的树状表示。它将代码的语法结构分解为可操作的节点,每个节点代表代码中的一种结构(如变量声明、函数调用、条件语句等)。

  • AST 通过词法分析(Tokenization):将代码分割成最小的语法单元(tokens),如关键字、标识符、运算符等;通过语法分析(Parsing):将 tokens 按照语法规则组装成 AST 结构

  • AST 常见的作用:

    • 代码转换:如将 ES6 代码转换为 ES5 代码,将 JSX 转换为普通的 JavaScript 代码。
    • 代码分析:如代码检查、代码格式化、代码压缩等。
    • 代码优化:如死代码删除、变量提升、代码合并等。
    • 自定义代码处理:如按需加载、自动埋点等。
  • 常见的JS AST 解析工具有

    • @babel/parser:Babel 生态的解析器,支持最新的 ES 标准
    • acorn:轻量高效的解析器,Vue 源码中使用
    • esprima:经典的 JavaScript 解析器
    • babel-eslint:一个基于 Babel 的 ESLint 插件,支持将 JavaScript 代码解析为 AST。
    • @typescript-eslint/parser:一个 TypeScript 解析器,支持将 TypeScript 代码解析为 AST。

TODO