كيف يتم تمثيل NullLiteral في شكل شجرة؟
-
15-09-2020 - |
سؤال
بحسب ال مواصفات 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