AST中的节点类型是代码抽象语法结构的基础表示单元 。 其反映了代码语法组成部分的不同类别与特性 。表达式节点用于表示各种运算和操作 。语句节点涵盖多种执行逻辑的代码单元 。函数定义节点包含函数的参数、体等关键信息 。变量声明节点用于宣告新变量并设定初始值 。类定义节点包含类名、属性和方法等内容 。模块节点代表
ObjectPattern: 对象模式,用于解构赋值中的对象,如{ a, b } = obj。 Program: 程序,AST的根节点,表示整个代码块或模块。 Property: 属性,对象字面量或类中的属性定义,如{ key: value }中的key: value。 RestElement: 剩余元素,用于收集函数参数或解构赋值中的剩余项,如function(...args)或[a, ...rest...
节点类型:AST中的节点可以有不同的类型,如表达式节点、语句节点、声明节点等。 相关优势 易于理解和修改:AST提供了一种直观的方式来理解和修改程序的结构。 高效的编译过程:编译器可以利用AST进行高效的代码分析和优化。 跨语言兼容性:AST可以用于多种编程语言,具有很好的通用性。
将上面的代码复制到 AST Explorer 便可以得到语法树,根据左侧的代码和右侧的语法树,我们可以统计语法树节点名词和具体描述,如下表: 这只是常用的那部分,更多节点类型名词在你需要用到时再补充即可。我会持续更新相关资料,感兴趣的朋友可以到夜幕团队的GitHub仓库 https://github.com/NightTeam/JavaScriptAST 查看 。
AST 节点类型对照表 序号类型原名称中⽂名称描述 1Program程序主体整段代码的主体 2VariableDeclaration变量声明声明⼀个变量,例如 var let const 3FunctionDeclaration函数声明声明⼀个函数,例如 function 4ExpressionStatement表达式语句通常是调⽤⼀个函数,例如 console.log()5BlockStatement块语句包裹在 {} 块...
AST 节点类型对照表 序号类型原名称中文名称描述 1 Program 程序主体 整段代码的主体 2 VariableDeclaration 变量声明 声明一个变量,例如 var let const 3 FunctionDeclaration 函数声明 声明一个函数,例如 function 4 Ex
AST 节点类型对照表,AST节点类型对照表序号类型原名称中文名称描述1Program程序主体整段代码的主体2VariableDeclaration变量声明声明一个变量,例如varletconst3FunctionDeclaration函数声明声明一个函数,例如function4Ex
我们对赋值语句、函数调用语句进行类型检查,就是找被赋值的变量声明的类型和实际的类型是否一样,而声明的类型可以从作用域中朝着对应的 binding,实际的类型则是具体的 AST 节点,两者一对比,就知道了是否有类型错误。 这就是简单的类型检查。 再复杂一点,如果有泛型呢? 其实泛型就是类型参数,之前是拿到声明就确定了...
"SELECT apiKey as datasetKey FROM db.apiKeys AD WHERE AD.accountId = ?"