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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top