<: 代表 extends
Programs
一個(gè)完整的程序數(shù)
interface Program <: Node {
type: "Program";
body: [ Statement ];
}
Statement(語(yǔ)句)
代表任意語(yǔ)句
interface Statement <: Node { }
tip: 語(yǔ)句一般會(huì)包含其他更小的語(yǔ)法
語(yǔ)句開(kāi)始
EmptyStatement
一個(gè)空語(yǔ)句,也就是,一個(gè)孤立的分號(hào).
interface EmptyStatement <: Statement {
type: "EmptyStatement";
}
BlockStatement
一個(gè)語(yǔ)句塊,也就是由大括號(hào)包圍的語(yǔ)句序列.
interface BlockStatement <: Statement {
type: "BlockStatement";
body: [ Statement ];
}
ExpressionStatement
一個(gè)表達(dá)式語(yǔ)句,也就是,僅有一個(gè)表達(dá)式組成的語(yǔ)句.
interface ExpressionStatement <: Statement {
type: "ExpressionStatement";
expression: Expression;
}
IfStatement
一個(gè)if語(yǔ)句.
interface IfStatement <: Statement {
type: "IfStatement";
test: Expression;
consequent: Statement;
alternate: Statement | null;
}
LabeledStatement
一個(gè)標(biāo)簽語(yǔ)句,也就是, 一個(gè)以 break/continue 標(biāo)簽開(kāi)頭的語(yǔ)句
interface LabeledStatement <: Statement {
type: "LabeledStatement";
label: Identifier;
body: Statement;
}
BreakStatement
一個(gè) break 語(yǔ)句
interface BreakStatement <: Statement {
type: "BreakStatement";
label: Identifier | null;
}
ContinueStatement
一個(gè)continue語(yǔ)句.
interface ContinueStatement <: Statement {
type: "ContinueStatement";
label: Identifier | null;
}
WithStatement
一個(gè) with 語(yǔ)句
interface WithStatement <: Statement {
type: "WithStatement";
object: Expression;
body: Statement;
}
SwitchStatement
一個(gè) switch 語(yǔ)句
interface SwitchStatement <: Statement {
type: "SwitchStatement";
discriminant: Expression;
cases: [ SwitchCase ];
lexical: boolean;
}
ReturnStatement
一個(gè) return 語(yǔ)句
interface ReturnStatement <: Statement {
type: "ReturnStatement";
argument: Expression | null;
}
ThrowStatement
一個(gè)人 throw 語(yǔ)句
interface ThrowStatement <: Statement {
type: "ThrowStatement";
argument: Expression;
}
TryStatement
一個(gè) try catch 語(yǔ)句
interface TryStatement <: Statement {
type: "TryStatement";
block: BlockStatement;
handlers: [ CatchClause ];
finalizer: BlockStatement | null;
}
WhileStatement
一個(gè) while 語(yǔ)句
interface WhileStatement <: Statement {
type: "WhileStatement";
test: Expression;
body: Statement;
}
DoWhileStatement
一個(gè) do/while 語(yǔ)句
interface DoWhileStatement <: Statement {
type: "DoWhileStatement";
body: Statement;
test: Expression;
}
ForStatement
一個(gè) for 語(yǔ)句
interface ForStatement <: Statement {
type: "ForStatement";
init: VariableDeclaration | Expression | null;
test: Expression | null;
update: Expression | null;
body: Statement;
}
ForInStatement
一個(gè) for/in 語(yǔ)句
interface ForInStatement <: Statement {
type: "ForInStatement";
left: VariableDeclaration | Expression;
right: Expression;
body: Statement;
each: boolean;
}
LetStatement
一個(gè) let 語(yǔ)句
interface LetStatement <: Statement {
type: "LetStatement";
head: [ { id: Pattern, init: Expression | null } ];
body: Statement;
}
DebuggerStatement
一個(gè) debugger 語(yǔ)句
interface DebuggerStatement <: Statement {
type: "DebuggerStatement";
}
Declaration(聲明)
聲明開(kāi)始
FunctionDeclaration
一個(gè)函數(shù)聲明
注意:id 字段不能為 null
interface FunctionDeclaration <: Function, Declaration {
type: "FunctionDeclaration";
id: Identifier;
params: [ Pattern ];
defaults: [ Expression ];
rest: Identifier | null;
body: BlockStatement | Expression;
generator: boolean;
expression: boolean;
}
VariableDeclaration
一個(gè)變量聲明,可以通過(guò)var, let, 或const.
interface VariableDeclaration <: Declaration {
type: "VariableDeclaration";
declarations: [ VariableDeclarator ];
kind: "var" | "let" | "const";
}
VariableDeclarator
一個(gè)變量聲明符.
注意:
- id字段不能為 null
- let和const是SpiderMonkey特有的.
- 注:SpiderMonkey 是Mozilla使用C/C++編寫(xiě)的JavaScript 引擎
interface VariableDeclarator <: Node {
type: "VariableDeclarator";
id: Pattern;
init: Expression | null;
}
表達(dá)式
interface Expression <: Node, Pattern { }
表達(dá)式開(kāi)始
ThisExpression
一個(gè)this表達(dá)式
interface ThisExpression <: Expression {
type: "ThisExpression";
}
ArrayExpression
一個(gè)數(shù)組表達(dá)式
interface ArrayExpression <: Expression {
type: "ArrayExpression";
elements: [ Expression | null ];
}
ObjectExpression
一個(gè)對(duì)象表達(dá)式
interface ObjectExpression <: Expression {
type: "ObjectExpression";
properties: [ { key: Literal | Identifier,
value: Expression,
kind: "init" | "get" | "set" } ];
}
FunctionExpression
一個(gè)函數(shù)表達(dá)式
interface FunctionExpression <: Function, Expression {
type: "FunctionExpression";
id: Identifier | null;
params: [ Pattern ];
defaults: [ Expression ];
rest: Identifier | null;
body: BlockStatement | Expression;
generator: boolean;
expression: boolean;
}
SequenceExpression
一個(gè)序列表達(dá)式,也就是由逗號(hào)分割的表達(dá)式序列
interface SequenceExpression <: Expression {
type: "SequenceExpression";
expressions: [ Expression ];
}