用于处理 JavaScript 和 TypeScript 程序的抽象语法树类¶
CodeQL 提供了大量类来表示 JavaScript 和 TypeScript 程序的抽象语法树。
抽象语法树(AST)表示程序的语法结构。AST 上的节点表示语句和表达式等元素。
语句类¶
此表列出了 Stmt 的子类,这些子类表示 ECMAScript 和 TypeScript 语句。
表达式类¶
表达式类数量众多,因此我们按类别介绍。本节中的所有类都是 表达式 的子类,除非另有说明。
字面量¶
本小节中的所有类都是 字面量 的子类。
表达式语法 | CodeQL 类 |
---|---|
true |
布尔字面量 |
23 |
数字字面量 |
4.2 |
数字字面量 |
"Hello" |
字符串字面量 |
/ab*c?/ |
正则表达式字面量 |
null |
空字面量 |
主表达式¶
本小节中的所有类都是 表达式 的子类。
表达式语法 | CodeQL 类 | 超类 | 备注 |
---|---|---|---|
this |
This表达式 | ||
[ 表达式… ] |
数组表达式 | ||
{ 属性… } |
对象表达式 | ||
function ( 参数… ) { 语句… } |
函数表达式 | 函数 | |
( 参数… ) => 表达式 |
箭头函数表达式 | 函数 | |
( 表达式 ) |
括号表达式 | ||
` … ` |
模板字面量 | 模板字面量 中的元素要么是表示常量模板元素的 模板元素,要么是表示形式为 ${ 表达式 } 的插值表达式的其他表达式 |
|
表达式 ` … ` |
标记模板表达式 | 标记模板表达式 中的元素要么是表示常量模板元素的 模板元素,要么是表示形式为 ${ 表达式 } 的插值表达式的其他表达式 |
属性¶
本小节中的所有类都是 Property 的子类。请注意,Property 不是 Expr 的子类。
属性语法 | CodeQL 类 | 超类 |
---|---|---|
Identifier : Expr |
ValueProperty | |
get Identifier () { Stmt… } |
PropertyGetter | PropertyAccessor |
set Identifier ( Identifier ) { Stmt… } |
PropertySetter | PropertyAccessor |
函数调用和 new
¶
本小节中的所有类都是 InvokeExpr 的子类。
表达式语法 | CodeQL 类 | 备注 |
---|---|---|
Expr ( Expr… ) |
CallExpr | |
Expr . Identifier ( Expr… ) |
MethodCallExpr | 这也包括以下形式的调用:Expr [ Expr ] ( Expr… ) |
new Expr ( Expr… ) |
NewExpr |
一元表达式¶
本小节中的所有类都是 UnaryExpr 的子类。
表达式语法 | CodeQL 类 |
---|---|
~ Expr |
BitNotExpr |
- Expr |
NegExpr |
+ Expr |
PlusExpr |
! Expr |
LogNotExpr |
typeof Expr |
TypeofExpr |
void Expr |
VoidExpr |
delete Expr |
DeleteExpr |
... Expr |
SpreadElement |
二元表达式¶
本小节中的所有类都是 BinaryExpr 的子类。
表达式语法 | CodeQL 类 | 超类 |
---|---|---|
Expr * Expr |
MulExpr | |
Expr / Expr |
DivExpr | |
Expr % Expr |
ModExpr | |
Expr ** Expr |
ExpExpr | |
Expr + Expr |
AddExpr | |
Expr - Expr |
SubExpr | |
Expr << Expr |
LShiftExpr | |
Expr >> Expr |
RShiftExpr | |
Expr >>> Expr |
URShiftExpr | |
Expr && Expr |
LogAndExpr | |
Expr || Expr |
LogOrExpr | |
Expr < Expr |
LTExpr | 比较 |
Expr > Expr |
GTExpr | 比较 |
Expr <= Expr |
LEExpr | 比较 |
Expr >= Expr |
GEExpr | 比较 |
Expr == Expr |
EqExpr | EqualityTest,Comparison |
Expr != Expr |
NEqExpr | EqualityTest,Comparison |
Expr === Expr |
StrictEqExpr | EqualityTest,Comparison |
Expr !== Expr |
StrictNEqExpr | EqualityTest,Comparison |
Expr & Expr |
BitAndExpr | |
Expr | Expr |
BitOrExpr | |
Expr ^ Expr |
XOrExpr | |
Expr in Expr |
InExpr | |
Expr instanceof Expr |
InstanceofExpr |
赋值表达式¶
此表中的所有类都是 Assignment 的子类。
更新表达式¶
此表中的所有类都是 UpdateExpr 的子类。
表达式语法 | CodeQL 类 |
---|---|
Expr ++ |
PostIncExpr |
Expr -- |
PostDecExpr |
++ Expr |
PreIncExpr |
-- Expr |
PreDecExpr |