NullLiteral はツリー形式でどのように表現されますか?
-
15-09-2020 - |
質問
による ECMAScript仕様 セクション内 7.8.1 ある 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
実際、production は有効な値を制限するためにのみ使用されます。 IdentifierName
, 、そしてこれは語彙レベルで見られるべきです。CST には含まれません。CST では、 IdentifierName
.
Literal のコンテキストは PrimaryExpression であるため、実際の CST のフラグメントは次のようになります。
...
|
PrimaryExpression
|
Literal
|
NullLiteral
|
null
所属していません StackOverflow