هل هناك أي مصطلحات رسمية حول شيء مثل قواعد الاقتباس المزدوجة ""؟

cs.stackexchange https://cs.stackexchange.com/questions/128538

سؤال

في العديد من لغات البرمجة، تعتبر السلسلة رمزًا مميزًا.

على سبيل المثال:

 token               ::= '"' string
                       | digit nat

 string              ::= char string
                       | '"'

 nat                 ::= digit nat
                       | ϵ

هذه قواعد نحوية LL(1) لبعض القواعد النحوية في لغات البرمجة.

عند تحليل أ string, ، ليست هناك حاجة للتحقق من مجموعة المتابعة، لأن هناك " في نهاية كل منهما string.

بالمقارنة مع nat, string هو أكثر سهولة في التحليل.

سؤالي هو

هل هناك أي مصطلحات رسمية حول هذا النوع من القواعد؟

شكرًا.


التحرير:

كان هناك خطأ ما في القواعد النحوية الأصلية، شكرًا @rici على الإشارة إلى أخطائي.

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

المحلول

لا يتم استخدام مجموعات FOLLLOW في تحليل أي منهما string أو nat.في كلتا الحالتين، يحتاج المحلل اللغوي فقط إلى تحديد ما إذا كان الإدخال ضمن مجموعة من الرموز الصالحة.في حالة nat, ، الرموز الصالحة هي أرقام؛في حالة string, ، فهي شخصيات غير ".(في اللغات الحقيقية، سيتحقق المحلل أيضًا من وجود \).ولكن في كلتا الحالتين، يعد الفحص ضروريًا، ولا يوجد معيار جيد لقول أن أحد الاختبارات "أبسط" من الآخر.(من الناحية العملية، من المرجح أن يكون كلا الفحصين بمثابة بحث بسيط في الجدول.إذن هم O (1).)

تكون مجموعات FOLLOW مطلوبة فقط عندما تحتوي القواعد على منتجات ε.وحتى ذلك الحين، فإن تصرفات المحلل اللغوي ليست معقدة.الأمر الأكثر تعقيدًا هو بناء المحلل اللغوي، وهو أمر يحدث مرة واحدة فقط.إنها ليست صفقة كبيرة حقًا، ولكن من الجدير بالملاحظة أن "القواعد النحوية الخالية من ε" هي شيء.لا أعتقد أن هناك أي مفردات مشتركة لوصف الفرق بين التكرار المنتهي صراحةً وضمنيًا، وبأي حال من الأحوال سيكون من الصعب جدًا تحديد التمييز بدقة.لك string سيتم تحليلها بواسطة محلل يستخدم قاعدة مختلفة لتجميع الزائدة ", ، ومن المحتمل جدًا أن ينتهي الأمر بالمحللين إلى نفس التنفيذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top