2

根据第7.8.1节中的ECMAScript 规范, a定义如下:NullLiteral

NullLiteral :: 
    

我想了解的是,当 aNullLiteral包含在第7.6.17.8节中的以下产品中时,它是如何以树形表示的。

保留字::
    关键词
    未来保留字
    空字面量
    布尔文字
文字::
    空字面量
    布尔文字
    数字字面量
    字符串字面量

我对它的外观的最佳猜测是:

InputElementDiv
    |
  令牌
    |
标识符名称
    |
保留字
    |
 文字
    |
空字面量
    |
   无效的

不过,这对我来说似乎不正确。

笔记

根据我的研究,似乎很少有编译器真正从语言语法生成 CST。我当然可以理解为什么,但这对我来说是一个学习练习,所以我想在我转向更专业的解析方法(例如使用解析器生成器)之前解决这个问题。

4

1 回答 1

2

所示的树没有被语法覆盖,因为它不提供从IdentifierNameto的推导ReservedWord,也没有提供对ReservedWord任何一个的推导Literal

实际上,ReservedWord产生式仅用于限制 的有效值IdentifierName,这应该在词汇级别上看到。它不会成为 CST,您只会在其中看到IdentifierName.

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

   ...
    |
PrimaryExpression
    |
 Literal 
    |
NullLiteral 
    |
   null
于 2010-07-16T16:27:54.640 回答