根据 7.8.1 部分中的ECMAScript specification,NullLiteral
的定义如下:
NullLiteral :: null
我想要了解的是,当NullLiteral
包含在 7.6.1 和 7.8 部分中的以下作品中时,如何以树形式表示强>
ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral
我最好猜测它的外观如下:
InputElementDiv | Token | IdentifierName | ReservedWord | Literal | NullLiteral | null
但这对我来说似乎并不合适。
注意
从我的研究看来,很少有编译器实际上从语言语法中生成CST。我当然可以理解为什么,但这对我来说是一个学习练习,所以我想在转向更专业的解析方法之前做到这一点,比如使用解析器生成器。
答案 0 :(得分:2)
语法未涵盖所示的树,因为它不提供IdentifierName
到ReservedWord
的派生,也不提供ReservedWord
到{{1}的派生或者。
Literal
生产实际上仅用于限制ReservedWord
的有效值,这应该在词汇层面上看到。它不会进入CST,您只能看到IdentifierName
。
Literal的上下文是PrimaryExpression,因此真正CST的片段可能如下所示:
IdentifierName