AST简介
常见的AST节点类型
| AST类型 | 名称 | 例子 | 说明 |
|---|
| Literal | 字面量 | xxxLiteral | |
| Identifiel | 标识符 | | 1. 变量和变量的引用。2. 有返回值,所以也是表达式 |
| Statement | 语句 | | 能独立执行的单位就是语句,可以以分号结尾 |
| Declaration | 声明(特殊语句) | | 声明变量(变量、函数、类型、import、export) |
| Expresstion | 表达式 | | 1. 和语句的区别是,它有返回值。2. 有的表达式能直接执行,所以它也是语句,AST会被包一层Statement |
| Class | 类语法 | | 有专门的类型,整个 class 的内容是 ClassBody,属性是 ClassProperty,方法是ClassMethod(通过 kind 属性来区分是 constructor 还是 method)。 |
| Module | 模块 | | 有专门的类型,Import 有具名导出、默认导出、聚合导出,都是ImportDecoration,但是specifiers属性不同。Export 也有三种,但是只有named export有specifiers属性。并且类型都不同。 |
| Program | 整个程序的节点 | | Program的body属性里面是statement的数组 |
| Directive | 指令 | “use strict” | |
| Comment | 注释 | | |
| File | 最外层的AST | | 包含Program、Comment、tokens等属性 |
AST的公共属性
- type
- start、end:代码在一行中的下标,不区分行
- loc:对象,有line、column记录行列