根据7.8.1节中的ECMAScript specification,NullLiteral
的定义如下:
NullLiteral ::
空值
我想了解的是,当在7.6.1和7.8节中找到的以下产生式中包含NullLiteral
时,如何以树形式表示它。
ReservedWord ::
关键词
未来保留字
空文字
布尔文字
文字::
空文字
布尔文字
数值文学
字符串字面量
关于它的外观,我最好的猜测是:
InputElementDiv
|
代币
|
标识符名称
|
保留字
|
文字
|
空文字
|
空值
不过,这对我来说似乎并不正确。
注意
根据我的研究,似乎很少有编译器实际上从语言语法生成CST。我当然可以理解为什么,但是这对我来说是一个学习练习,因此我想在使用更专业的解析方法(例如使用解析器生成器)之前弄清楚这一点。
最佳答案
所示树没有被语法覆盖,因为它不提供从IdentifierName
到ReservedWord
的派生,也没有提供从ReservedWord
到Literal
的派生。
实际上,ReservedWord
生成仅用于限制IdentifierName
的有效值,这应该在词汇层面上看到。它不会进入CST,您只能在其中看到IdentifierName
。
Literal的上下文是PrimaryExpression,因此实际CST的片段可能如下所示:
...
|
PrimaryExpression
|
Literal
|
NullLiteral
|
null