سؤال

بحسب ال مواصفات 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 
    |
   باطل

هذا لا يبدو صحيحًا بالنسبة لي بالرغم من ذلك.

ملحوظة

يبدو من بحثي أن عددًا قليلاً جدًا من المترجمين يقومون بالفعل بإنشاء CSTs من قواعد اللغة.يمكنني بالطبع أن أفهم السبب ولكن هذا تمرين تعليمي بالنسبة لي، لذا أريد أن أقوم بهذا بشكل صحيح قبل أن أنتقل إلى وسائل أكثر احترافية للتحليل مثل استخدام مولد المحلل اللغوي.

هل كانت مفيدة؟

المحلول

الشجرة كما هو موضح غير مشمولة بالنحو، لأن ذلك لا يوفر اشتقاقًا منها IdentifierName ل ReservedWord, ، ولا ينص على الاشتقاق ReservedWord ل Literal أيضاً.

ال ReservedWord في الواقع يتم استخدام الإنتاج فقط لتقييد القيم الصحيحة لـ IdentifierName, ، وهذا ينبغي أن ينظر إليه على المستوى المعجمي.لا يتم تحويله إلى CST، حيث يمكنك رؤية فقط IdentifierName.

سياق الحرفي هو PrimaryExpression، لذلك قد يبدو جزء من CST حقيقي كما يلي:

   ...
    |
PrimaryExpression
    |
 Literal 
    |
NullLiteral 
    |
   null
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top