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记录行列