Question

Selon le Spécification ECMAScript dans la section 7.8.1 un NullLiteral est défini comme suit :

NullLiteral :: 
    nul

Ce que j'essaie de comprendre, c'est comment cela est représenté sous forme d'arbre lorsqu'un NullLiteral est inclus dans les productions suivantes trouvées dans les sections 7.6.1 et 7.8.

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

Ma meilleure hypothèse quant à quoi cela ressemblerait est la suivante :

InputElementDiv
    |
  Token
    |
IdentifierName
    |
ReservedWord 
    |
 Literal 
    |
NullLiteral 
    |
   nul

Mais cela ne me semble tout simplement pas correct.

Note

D'après mes recherches, il semble que très peu de compilateurs génèrent réellement des CST à partir de la grammaire du langage.Je peux bien sûr comprendre pourquoi, mais c'est un exercice d'apprentissage pour moi, donc je veux bien faire les choses avant de passer à des moyens d'analyse plus professionnels, comme l'utilisation d'un générateur d'analyseur.

Était-ce utile?

La solution

L'arbre tel qu'illustré n'est pas couvert par la grammaire, car cela ne fournit pas de dérivation de IdentifierName à ReservedWord, et il ne permet pas de dériver ReservedWord à Literal soit.

Le ReservedWord la production n'est en fait utilisée que pour restreindre les valeurs valides de IdentifierName, et cela doit être vu au niveau lexical.Il ne s'agit pas d'un CST, où l'on verrait uniquement les IdentifierName.

Le contexte de Literal est PrimaryExpression, donc un fragment d'un véritable CST pourrait ressembler à ceci :

   ...
    |
PrimaryExpression
    |
 Literal 
    |
NullLiteral 
    |
   null
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top