Domanda

Secondo il specifica di ecmascript Nella sezione 7.8.1 A NullLiteral è definito come segue:

NullLiteral :: 
    null
.

Quello che sto cercando di capire è il modo in cui è rappresentato in forma di albero quando un NullLiteral è incluso nelle seguenti produzioni trovate nelle sezioni 7.6.1 e 7.8 . .

ReservedWord :: 
    Keyword 
    FutureReservedWord 
    NullLiteral 
    BooleanLiteral 
Literal :: 
    NullLiteral 
    BooleanLiteral 
    NumericLiteral 
    StringLiteral 
.

La mia migliore ipotesi su come sarebbe sembrare questo:

InputElementDiv
    |
  Token
    |
IdentifierName
    |
ReservedWord 
    |
 Literal 
    |
NullLiteral 
    |
   null
.

Questo non sembra comunque giusto per me.

Nota

Dalla mia ricerca sembra che pochissimi compilatori generano CSTS dalla grammatica della lingua.Posso ovviamente capire perché, ma questo è un esercizio di apprendimento per me, quindi voglio avere questo diritto prima di passare a mezzi di analisi più professionali come l'utilizzo di un generatore di parser.

È stato utile?

Soluzione

L'albero come mostrato non è coperto dalla grammatica, perché ciò non fornisce una derivazione da IdentifierName a ReservedWord e non fornisce neanche di derivare ReservedWord a Literal.

La produzione ReservedWord in effetti viene utilizzata solo per limitare i valori validi di IdentifierName, e questo dovrebbe essere visto sul livello lessicale.Non lo fa in un CST, dove vedresti solo il IdentifierName.

Il contesto di Letterale è Primary Expression, quindi un frammento di un vero cst potrebbe assomigliare a questo:

   ...
    |
PrimaryExpression
    |
 Literal 
    |
NullLiteral 
    |
   null
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top