Wie wird ein NullLiteral in Baumform dargestellt?
-
15-09-2020 - |
Frage
Nach dem ECMAScript-Spezifikation im Abschnitt 7.8.1 a NullLiteral
ist wie folgt definiert:
NullLiteral :: null
Was ich versuche zu verstehen ist, wie dies in Baumform dargestellt wird, wenn a NullLiteral
ist in den folgenden Produktionen enthalten, die in Abschnitten zu finden sind 7.6.1 und 7.8.
ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral
Meine beste Vermutung, wie es aussehen würde, ist dies:
InputElementDiv | Token | IdentifierName | ReservedWord | Literal | NullLiteral | null
Das scheint mir aber einfach nicht richtig zu sein.
Beachten
Aus meinen Recherchen geht hervor, dass nur sehr wenige Compiler tatsächlich CSTs aus der Sprachgrammatik generieren.Ich kann natürlich verstehen warum, aber dies ist eine Lernübung für mich, also möchte ich das richtig machen, bevor ich zu professionelleren Analysemethoden wie der Verwendung eines Parsergenerators übergehe.
Lösung
Der gezeigte Baum wird von der Grammatik nicht abgedeckt, da dies keine Ableitung von bietet IdentifierName
zu ReservedWord
, und es sieht keine Ableitung vor ReservedWord
zu Literal
entweder.
Der ReservedWord
die Produktion wird tatsächlich nur verwendet, um gültige Werte von einzuschränken IdentifierName
, und dies sollte auf der lexikalischen Ebene gesehen werden.Es macht es nicht zu einem CST, wo Sie nur das sehen würden IdentifierName
.
Der Kontext von Literal ist PrimaryExpression , also könnte ein Fragment eines echten CST so aussehen:
...
|
PrimaryExpression
|
Literal
|
NullLiteral
|
null