源代码 (JS/TS)
AST 树形结构 (Acorn)
什么是抽象语法树 (AST)?
为何重要
源码只是字符串。要让机器理解代码逻辑(如 Babel 转换、ESLint 检查),必须将其转化为结构化的树状表示。
AST 的作用
AST 剔除了冗余细节(如分号、括号),专注于逻辑核心。它是现代前端工具链(Vite, Webpack, Prettier)的基石。
AST 的工作流程
编译器处理代码通常经过以下步骤:
- 词法分析 : 将字符串分解为 Token(关键字、变量等)。
- 语法分析 : 根据规则将 Token 序列组合成 AST 树。
- 转换 : 遍历并修改 AST 节点(Babel 插件的核心)。
- 代码生成 : 将修改后的 AST 重新还原为代码。
常见 AST 节点类型
-
Identifier: 标识符,如变量名、函数名。 -
Literal: 字面量,如字符串、数字。 -
VariableDeclaration: 变量声明。 -
CallExpression: 函数调用。