دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - نسخهی قابل چاپ |
دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - sonia11 - 18 بهمن ۱۳۹۲ ۰۷:۴۲ ب.ظ
با سلام دوستان چرا این گرامر قابل استفاده برای در پارسر LALR و SLR نیست(سوال ۲۱ سال ۸۹) ST->if BE then ST EP EP->else ST end if EP->end if BE->be ST->st |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - sonia11 - 19 بهمن ۱۳۹۲ ۱۲:۵۸ ب.ظ
یعنی هیچ کی نیست در این مورد یه توصیحی بده؟ |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - mahsalove - 19 بهمن ۱۳۹۲ ۰۱:۲۶ ب.ظ
خانمی این جواب مدرسان شریف در مورد این سوال: این گرامر SLR(1 است زیرا در جدول تجزیه SLR(1 آن هیچ تداخل انتقال-کاهش و کاهش-کاهش وجود ندارد.از آنجایی که هر گرامر SLR(1 یک گرامر LALR(1 می توان نتیجه گرفت دستور If در زبان پاسکال یک گرامر LL(1,SLR(1,LALR(1 و همچنین LR(1 است. |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - npour - 19 بهمن ۱۳۹۲ ۰۱:۵۵ ب.ظ
(۱۹ بهمن ۱۳۹۲ ۱۲:۵۸ ب.ظ)sonia11 نوشته شده توسط: یعنی هیچ کی نیست در این مورد یه توصیحی بده؟ چرا قابل استفاده نیست؟ هیچ تداخل وجود نداره |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - sonia11 - 19 بهمن ۱۳۹۲ ۰۱:۵۶ ب.ظ
اما جواب سنجش و پارسه در مورد این سوال این هست که این گرامر LL1 است اما قابل استفاده در SLR و LALR نیست با وجود اینکه هیچ تداخلی در جدول پارس انها نیست دلیلش هم اینه دستورات کنش در جای صحیح قرار نگرفته اند. من در مورد همین دستورات کنش و محل قرارگیریشون در پارسر های پایین به بالا خصوصا در این سوال ابهام دارم. ممنون میشم دوستان راهنمایی کنن |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - e.shrm - 19 بهمن ۱۳۹۲ ۰۲:۰۷ ب.ظ
کتاب نصیر هم گفته هست. |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - hosshah - 22 بهمن ۱۳۹۲ ۱۲:۰۵ ق.ظ
(۱۹ بهمن ۱۳۹۲ ۰۱:۵۶ ب.ظ)sonia11 نوشته شده توسط: اما جواب سنجش و پارسه در مورد این سوال این هست که این گرامر LL1 است اما قابل استفاده در SLR و LALR نیست با وجود اینکه هیچ تداخلی در جدول پارس انها نیست دلیلش هم اینه دستورات کنش در جای صحیح قرار نگرفته اند. منم نظرم همون گزینه ۴ هست اما این اولین باره دستورات کنش به گوشم میخوره. منظورتون از کنش چیه دقیقا؟ |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - sonia11 - 22 بهمن ۱۳۹۲ ۱۰:۵۵ ق.ظ
(۲۲ بهمن ۱۳۹۲ ۱۲:۰۵ ق.ظ)hosshah نوشته شده توسط:در پارسر های LR علائم کنش برای هدایت عمل پارس هستش (همون ACTION SYMBOL) .(19 بهمن ۱۳۹۲ ۰۱:۵۶ ب.ظ)sonia11 نوشته شده توسط: اما جواب سنجش و پارسه در مورد این سوال این هست که این گرامر LL1 است اما قابل استفاده در SLR و LALR نیست با وجود اینکه هیچ تداخلی در جدول پارس انها نیست دلیلش هم اینه دستورات کنش در جای صحیح قرار نگرفته اند. در این سوال خودش مشخص کرده که ترجمه با هدایت دستور زبان(این یعنی حواسمون باشه تو این سوال action symbol ها رو در نظر داشته باشیم). بااین حساب این علائم کنش گرچه نوشته نشده اند اما ما باید بدونیم کجاها قرار می گیرند.در پارسر های LR این علائم باید سمت راست رشته باشند و زمانی اجرا میشن که عمل Reduce انجام بشه با این حساب قاعده ۲ این گرامر نمیتونه به موقع علائم کنش رو اجرا کنه و به همین دلیل قابل استفاده در پارسر با هدایت ترجمه(یعنی دارای ACtion symbol ) نیست.کلا این سوال منظورش این نبوده که ایا گرامر SLRیا LALR هست بلکه منظورش قابلیت استفاده از اون برای زمانی است که Action symbol داریم. در ضمن من کلید نهایی سنجش رو دارم که زده گزینه ۱ |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - hosshah - 22 بهمن ۱۳۹۲ ۰۳:۳۹ ب.ظ
بله باید Action Symbol ها جایگذاری بشن و تو این گرامر همشون آخر قاعده قرار میگیرن فکر میکنم حالا چرا میگین قاعده دوم نمیتونه Semantic Routine رو فرخوانی کنه؟ شما میگید مشکل اینه؟ |
RE: دلیل قابل استفاده نبودن این گرامر در پارسرهای SLRوLALR - sonia11 - 22 بهمن ۱۳۹۲ ۰۷:۴۳ ب.ظ
(۲۲ بهمن ۱۳۹۲ ۰۳:۳۹ ب.ظ)hosshah نوشته شده توسط: بله باید Action Symbol ها جایگذاری بشن و تو این گرامر همشون آخر قاعده قرار میگیرن فکر میکنمبله مشکل همینه! راستش فکر میکنم خودم تا حدودی فهمیدم مشکل از کجاست فکر می کنم قاعده دوم یکی از action symbol ها رو که باید قبل از ST بیاد جا انداخته. |