NullLiteral 如何以树形式表示?
-
15-09-2020 - |
题
根据 ECMAScript 规范 在部分 7.8.1 A NullLiteral
定义如下:
NullLiteral :: 无效的
我想要理解的是,当 NullLiteral
包含在以下部分中的作品中 7.6.1 和 7.8.
ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral
我对其外观的最佳猜测是:
InputElementDiv | Token | IdentifierName | ReservedWord | Literal | NullLiteral | 无效的
但这对我来说似乎不太合适。
笔记
根据我的研究,似乎很少有编译器真正从语言语法生成 CST。我当然可以理解为什么,但这对我来说是一个学习练习,所以我想在转向更专业的解析方法(例如使用解析器生成器)之前先解决这个问题。
解决方案
如图所示的树没有被语法覆盖,因为它没有提供从 IdentifierName
到 ReservedWord
, ,并且它不提供导出 ReservedWord
到 Literal
任何一个。
这 ReservedWord
事实上,生产仅用于限制有效值 IdentifierName
, ,这应该从词汇层面来看。它不会进入 CST,在那里您只会看到 IdentifierName
.
Literal 的上下文是 PrimaryExpression,因此真实 CST 的片段可能如下所示:
...
|
PrimaryExpression
|
Literal
|
NullLiteral
|
null
不隶属于 StackOverflow