تالار گفتمان مانشت
تشخیص LL1 بودن - نسخه‌ی قابل چاپ

تشخیص LL1 بودن - hosshah - 28 دى ۱۳۹۲ ۰۹:۳۷ ب.ظ

سلام دوستان در مورد سوال زیر من بحثی روی این که گزینه درست کدومه ندارم
گزینه درست ۲ اعلام شده یعنی این گرامر [tex]LL(1)[/tex] هست!!!
[tex]First(dD)=\{d\}[/tex]
[tex]First(A)=\{a\} Follow(A)[/tex]
[tex]Follow(A)= First(B)[/tex]
[tex]First(B)=\{b,d\}[/tex]
خب پس معلوم میشه دو تا قاعده [tex]D\rightarrow dD|A[/tex] دارای First یکسان هستن پس تداخل First-First دارن خب صد در صد LL1 نیست دیگه
نظر شما چیه؟مرسی

[تصویر:  238498_LL1.png]

RE: تشخیص LL1 بودن - azad_ahmadi - 29 دى ۱۳۹۲ ۱۲:۱۹ ق.ظ

سلام.

اشتباه محاسبه میکنید. دوباره عملیات رو انجام بدید با دقت بیشتر، اگر باز درست در نیومد توضیح میدم.

RE: تشخیص LL1 بودن - tabassomesayna - 29 دى ۱۳۹۲ ۱۲:۳۶ ق.ظ

سلام
روش بدست آوردن first:
[tex]first(\alpha )={Terminals,\varepsilon }=(a|\alpha \mapsto ^* a\beta )[/tex]
به طور خلاصه فرست آلفا یعنی تمامی پایانه هایی که با الفا از صفر گام یا بیشتر بهشون می رسیم.
الان در اینجا فرست A میشه :a , لاندا که اشتراکش با d میشه تهی

RE: تشخیص LL1 بودن - hosshah - 29 دى ۱۳۹۲ ۰۱:۱۱ ق.ظ

(۲۹ دى ۱۳۹۲ ۱۲:۱۹ ق.ظ)azad_ahmadi نوشته شده توسط:  سلام.

اشتباه محاسبه میکنید. دوباره عملیات رو انجام بدید با دقت بیشتر، اگر باز درست در نیومد توضیح میدم.

سلام مرسی از پاسختون
اشتباهم مثله اینکه در محاسبه [tex]Follow(A)[/tex] هست
فکر کنم اینجا داریم [tex]Follow(A)=Follow(D)= First(E)[/tex]
درست میگم یا بازم اشتباهه؟

(۲۹ دى ۱۳۹۲ ۱۲:۳۶ ق.ظ)tabassomesayna نوشته شده توسط:  سلام
روش بدست آوردن first:
[tex]first(\alpha )={Terminals,\varepsilon }=(a|\alpha \mapsto ^* a\beta )[/tex]
به طور خلاصه فرست آلفا یعنی تمامی پایانه هایی که با الفا از صفر گام یا بیشتر بهشون می رسیم.
الان در اینجا فرست A میشه :a , لاندا که اشتراکش با d میشه تهی

ممنونم. اینقدر درگیر First و Follow شدم که دیگه گیج میزنم