كيف يمكنني القضاء على العودية الأيسر في القواعد التالية؟

StackOverflow https://stackoverflow.com/questions/1095774

سؤال

إليك القواعد النحوية، والتي من المفترض أن تصف لغة من الأقواس المتداخلة مع فواصل كمحددين:

L ::= {L} | L,L |

بعض الأمثلة الأخرى من الأوتار كنت أتوقع أن يقبل القواعد ورفضه:

قبول:

{,{,,{,}},,{,}}
{{{{}}}}
{,{}}

يرفض:

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

المحلول

القيام به باليد:

L :: = { ل } | { ل } , | , ل |. ε.

أو بدلا من الجناح فقط يمكننا استخدام نهج أكثر منهجية وتطبيق الخوارزمية من ويكيبيديا إزالة العودية اليسار الفورية:

L :: = { ل } ل1 | ل1
ل1 ::= ε | , ليرة لبنانية1

نصائح أخرى

بادئ ذي بدء، لن يقبل هذا النحو مثالك الأول، لأنه يتطلب أن تكون الفواصل بعد هدفين وثيق وقبل هدفين مفتوحين. أود أن أقترح إعادة كتابة ذلك

L::= {L} | ,L

هذا لن يتخلص من العودية اليسرى، لكنه سوف يطابق إجاباتك المقبولة على الأقل.

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