محلل بسيط من اليسار إلى اليمين

مجزئ يسار يمين البسيط عادة يحتوي على حالات تعارض أكثر من مجزئ يسار يمين الأمامي.[1] في لغات حاسوب العالم الحقيقي، لا يكفي استخدام مجزئ SLR، لكنها تعتبر آداة جيدة في مشاريع الطلاب الحاسوبية. قواعد الـ SLR هي القواعد التي لا تحتوي على تقارير تعارض مع أي مولد مجزئ SLR.

الخوارزمية

خوارزمية تجزئ SLR

Initialize the stack with S
Read input symbol
while (true)
  if Action(top(stack), input) = S
    NS <- Goto(top(stack),input)
    push NS
    Read next symbol
  else if Action(top(stack), input) = Rk
    output k
    pop |RHS| of production k from stack
    NS <- Goto(top(stack), LHS_k)
    push NS
  else if Action(top(stack),input) = A
    output valid, return
  else
    output invalid, return

مثال

قاعدة يمكن تحليلها باستخدام مجزئ SLR وبدون استخدام مجزئ LR(0) كما يلي:

(0) S → E
(1) E → 1 E
(2) E → 1

عند بناء الـaction وgoto كما تم في جدول مجزئ LR(0) ينتج لنا المجموعات والجداول التالية:

Item set 0
S → • E
+ E → • 1 E
+ E → • 1
Item set 1
E → 1 • E
E → 1 •
+ E → • 1 E
+ E → • 1
Item set 2
S → E •
Item set 3
E → 1 E •

جداول الـaction وgoto :

action goto
state 1 $ E
0 s1 2
1 s1/r2 r2 3
2 acc
3 r1 r1

كما هو ملاحظ يوجد تعارض تحويل في state 1 و terminal '1'. لكن.المجموعة التلية من E هي { $ } فتقلل الإجراءات r1 وr2 وتكون صالحة فقط في العامود $. والنتيجة هي أقل تعارض لجدول الـ goto:

action goto
state 1 $ E
0 s1 2
1 s1 r2 3
2 acc
3 r1

مراجع

  1. "معلومات عن محلل بسيط من اليسار إلى اليمين على موقع academic.microsoft.com". academic.microsoft.com. مؤرشف من الأصل في 07 أبريل 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)

    انظر أيضا

    • بوابة تقنية المعلومات
    • بوابة علم الحاسوب
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.