سؤال

أنا جديد في موضوع التجميع وقد بدأت للتو تمرينًا للتحليل من الأسفل إلى الأعلى.

لقد علقت على المشكلة التالية.

أنشئ جدول تحليل LR(0) لمتابعة القواعد النحوية:

1) E –> E + T
2) E –> T
3) T –> (E)
4) T –> id


I0 :

   E' –> .E
   E –> .E + T
   E –> .T
   T –> .(E)
   T –> .id

على E ستكون الحالة التالية في DFA هي:

 I1:

    E' -> E.
    E  -> E. + T

مما تعلمته حتى الآن، أليس هذا صراعًا بين S-R؟لأن المحلل اللغوي لن يعرف ما إذا كان سيتم تقليله أو يتحول لأنه لا يوجد لديه متغير ذو مظهر؟لذلك لا ينبغي أن يكون هذا النحو LR(0)؟

لكن ملف PDF الذي أقرأه قام ببناء جدول LR(0).فهل هناك خطأ في ملف PDF أم أنني أخطأت في فهم المفهوم؟

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

المحلول

هذا هو في الواقع صراع تحول / تقليل.هذا القواعد ليس LR (0).يمكنك أيضا رؤية هذا لأنه ليس خالية من البادئة ؛يحتوي Grammar على سلاسل متعددة بادئات مع بعضها البعض، لذلك لا يمكن أن يكون LR (0).

قال، لا يزال بإمكانك بناء جميع مجموعات LR (0) تكوينها وجعل LR (0) Automaton.هذا لن يكون حتميا بسبب تحول / تقليل الصراع.من الممكن، لذلك، أنك على حق والبريد هو الصحيح.

آمل أن يساعد هذا!

نصائح أخرى

لقد قمت بزيادة القواعد مع E' -> E.عادةً، يمكنك زيادة الإنتاج مثل E' -> E $, ، حيث $ هو رمز (طرفي) لا يظهر في القواعد، ويشير إلى نهاية الإدخال.

لذلك سيكون I1 في الواقع


E' -> E. $
E  -> E. + T

وليس هناك صراع.(وأنا أؤمن بالقواعد يكون ل ر (0).)

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