根据 ECMAScript specification 7.8.1 一 NullLiteral 定义如下:
NullLiteral
NullLiteral :: null
我试图理解的是当一个 空文字 包含在以下部分中的产品中 7.6.1 7.8 .
空文字
ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral
我最好的猜测是:
InputElementDiv | Token | IdentifierName | ReservedWord | Literal | NullLiteral | null
但我觉得这不太对。
根据我的研究,似乎很少有编译器真正从语言语法生成cst。我当然可以理解为什么,但这对我来说是一个学习练习,所以我想在我转向更专业的解析方法(比如使用解析器生成器)之前,先弄清楚这一点。
语法没有覆盖如图所示的树,因为它不提供 IdentifierName 到 ReservedWord ,它没有规定 保留字 到 Literal 任何一个。
IdentifierName
ReservedWord
保留字
Literal
这个 实际上,production只用于限制 标识符名称 标识符名称 .
标识符名称
... | PrimaryExpression | Literal | NullLiteral | null