NullLiteral如何以树形式表示?

时间:2010-07-14 15:32:58

标签: javascript parsing tree ecma262 concrete-syntax-tree

根据 7.8.1 部分中的ECMAScript specificationNullLiteral的定义如下:

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。我当然可以理解为什么,但这对我来说是一个学习练习,所以我想在转向更专业的解析方法之前做到这一点,比如使用解析器生成器。

1 个答案:

答案 0 :(得分:2)

语法未涵盖所示的树,因为它不提供IdentifierNameReservedWord的派生,也不提供ReservedWord到{{1}的派生或者。

Literal生产实际上仅用于限制ReservedWord的有效值,这应该在词汇层面上看到。它不会进入CST,您只能看到IdentifierName

Literal的上下文是PrimaryExpression,因此真正CST的片段可能如下所示:

IdentifierName