كيف يمكنني القضاء على العودية الأيسر في القواعد التالية؟
-
11-09-2019 - |
سؤال
إليك القواعد النحوية، والتي من المفترض أن تصف لغة من الأقواس المتداخلة مع فواصل كمحددين:
L ::= {L} | L,L |
بعض الأمثلة الأخرى من الأوتار كنت أتوقع أن يقبل القواعد ورفضه:
قبول:
{,{,,{,}},,{,}}
{{{{}}}}
{,{}}
يرفض:
{}{}
{,{}{}}
{{},{}
المحلول
القيام به باليد:
L :: = {
ل }
| {
ل }
,
| ,
ل |. ε.
أو بدلا من الجناح فقط يمكننا استخدام نهج أكثر منهجية وتطبيق الخوارزمية من ويكيبيديا إزالة العودية اليسار الفورية:
L :: = {
ل }
ل1 | ل1
ل1 ::= ε | ,
ليرة لبنانية1
نصائح أخرى
بادئ ذي بدء، لن يقبل هذا النحو مثالك الأول، لأنه يتطلب أن تكون الفواصل بعد هدفين وثيق وقبل هدفين مفتوحين. أود أن أقترح إعادة كتابة ذلك
L::= {L} | ,L
هذا لن يتخلص من العودية اليسرى، لكنه سوف يطابق إجاباتك المقبولة على الأقل.
لا تنتمي إلى StackOverflow