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

LL1 بودن گرامر - mahdikoochooloo - 12 آبان ۱۳۹۰ ۱۲:۵۰ ق.ظ

سلام دوستان
این سوال رو از اقای پور امینی پرسیدم ما هنوز جوابی دریافت نکردم:

کسی می تونه جوابشو بده

متن سوال:

سلام و وقت بخیر
بنده کتاب کامپایلر شما را مطالعه کردم. جایی برایم سوالی پیش آمد که فکر
می کنم مشکل از کتاب شماست.
در صفحه ۱۷۷ گرامری به صورت زیر دادید:
S->Aa|Bb
A->lambda|cAb
B->lambda|dAa
و فرمودید این گرامر LL(1) نیست چون در جدول تجزیه آن ۲ قاعده در یک خانه
وجود ندارد.
اما در صفحات قبل از موارد LL(1) نبودن یک گرامر این قاعده را متذکر شده بودید:
اگر
A->X|Y
X->lambda|...
Y->lambda|...
پس با این اوصاف گرامر صفحه ۱۷۷ LL(1) نیست.
آیا نه چنین است؟
اگر بنده اشتباه می کنم لطفا برای یادگیری بنده نکاتی را مرقوم فرمایید

با تشکر

RE: سوال از ابهام که پرسیده شده از آقای پور امینی - ahmadnouri - 12 آبان ۱۳۹۰ ۰۲:۰۲ ق.ظ

(۱۲ آبان ۱۳۹۰ ۱۲:۵۰ ق.ظ)mahdikoochooloo نوشته شده توسط:  و فرمودید این گرامر LL(1) نیست چون در جدول تجزیه آن ۲ قاعده در یک خانه
وجود ندارد.
شاید اشتباه چابی بوده است و باید میشد
چون در جدول تجزیه آن ۲ قاعده در یک خانه
وجود دارد.

سوال از ابهام که پرسیده شده از آقای پور امینی - mahdikoochooloo - 12 آبان ۱۳۹۰ ۱۰:۰۸ ب.ظ

مشکل جدول تجزیه نیست
چون جدول تجزیه فقط هیچ مشکلی نداره
مشکل اون قانونیه که توی صورت سوال عرض کردم
اون رعایت نشده

یعنی واقعا اون قانون هست
یعنی آیا اون قانون در تشخیص ال ال وان استفاده می شه؟

RE: سوال از ابهام که پرسیده شده از آقای پور امینی - ahmadnouri - 13 آبان ۱۳۹۰ ۰۱:۳۸ ق.ظ

دوست عزیز برای LL1 نبودن این گرامر میشه گفت که
[tex]firs(Aa)\bigcap firs(Bb)\neq \varnothing[/tex]
چون در هر دو مجموعه از first ‌ها لاندا رو داریم

RE: سوال از ابهام که پرسیده شده از آقای پور امینی - Mojtaba - 15 آبان ۱۳۹۰ ۱۱:۰۰ ق.ظ

(۱۳ آبان ۱۳۹۰ ۰۱:۳۸ ق.ظ)ahmadnouri نوشته شده توسط:  دوست عزیز برای LL1 نبودن این گرامر میشه گفت که
[tex]firs(Aa)\bigcap firs(Bb)\neq \varnothing[/tex]
چون در هر دو مجموعه از first ‌ها لاندا رو داریم
سلام.
گفتم شاید بچه‌ها بیان اینجا و این مطلب را بخونن‌، بر خودم لازم دانستم که دانسته های خودمم را در این زمینه بدم:
شما دوست عزیز باید نسبت به خود Aa یا خود Bb باید‌، first میگرفتید و این استدلال شما اشتباهه.
در واقع وقتی میگیم LL یک‌، یعنی با داشتن یک کاراکتر پارس را انجام بدیم نه صفر کاراکتر (لاندا).

سوال از ابهام که پرسیده شده از آقای پور امینی - ahmadnouri - 18 آبان ۱۳۹۰ ۱۲:۳۴ ق.ظ

خب Mojtaba جان first من هم نسبت به خود Aa وBb اه دیگه فقط چیزی که من گفتم این بود که در هر دوی این مجموعه‌ها لاندا هست پس نمی تونه LL1 باشه

RE: سوال از ابهام که پرسیده شده از آقای پور امینی - Mojtaba - 18 آبان ۱۳۹۰ ۰۹:۱۰ ق.ظ

(۱۸ آبان ۱۳۹۰ ۱۲:۳۴ ق.ظ)ahmadnouri نوشته شده توسط:  خب Mojtaba جان first من هم نسبت به خود Aa وBb اه دیگه فقط چیزی که من گفتم این بود که در هر دوی این مجموعه‌ها لاندا هست پس نمی تونه LL1 باشه

دوست عزیز گرامر LL1 هست و آن کتاب صحیح گفته و آن گرامر دومی که دوستمان گفته LL1 نیست . شما میشه بگی چطوری نسب به Aa,Bb ،فرست گرفتی که با هم اشتراک داشتند.
به این نکته باید توجه کنی که فرست یک متغیر یا عبارت وقتی شامل لاندا میشه که خود عبارت یا متغیر بتونه با لاندا جایگذاری بشه‌، که اینجا همچین چیزی نیست
منتظر نظراتتون هستم با سپاس از ahmadnouri عزیرWink

سوال از ابهام که پرسیده شده از آقای پور امینی - ahmadnouri - 18 آبان ۱۳۹۰ ۰۱:۳۶ ب.ظ

(۱۸ آبان ۱۳۹۰ ۰۹:۱۰ ق.ظ)Mojtaba نوشته شده توسط:  دوست عزیز گرامر LL1 هست و آن کتاب صحیح گفته و آن گرامر دومی که دوستمان گفته LL1 نیست . شما میشه بگی چطوری نسب به Aa,Bb ،فرست گرفتی که با هم اشتراک داشتند.
به این نکته باید توجه کنی که فرست یک متغیر یا عبارت وقتی شامل لاندا میشه که خود عبارت یا متغیر بتونه با لاندا جایگذاری بشه‌، که اینجا همچین چیزی نیست
منتظر نظراتتون هستم با سپاس از ahmadnouri عزیرWink

بله حق با شماست این گرامر LL1 است
خیلی ممنون به خاطر نکته ای که گوش زد کردید
از mahdikoochooloo هم به خاطر اشتباه جواب دادنم معذرت میخوام

پست های قبلیم رو بخاطر اینکه بقیه دوستان هم به این نکته توجه داشته باشن ویرایش و حذف نمیکنم