follow (مشکل در پیاده سازی قانون سوم) - نسخهی قابل چاپ |
follow (مشکل در پیاده سازی قانون سوم) - saba_1984 - 11 مهر ۱۳۸۹ ۱۰:۲۶ ب.ظ
سلام من تو تشخیص follow مشکل دارم . در واقع تو پیاده سازی قانون سومش مشکل دارم . کسی میتونه کمکم کنه؟ |
follow - parsaNA - 20 مهر ۱۳۸۹ ۰۲:۰۹ ب.ظ
follow(A) یعنی پایانه هایی که بلافاصله بعد از تولیدات A قرار می گیرن . پایانه می تونه از طریق یک غیر پایانه ای که بلافاصله بعد از A در هرجای گرامر اومده، باشه . اون سه قانون رو نمی خواد حفظ کنی . روش کنکوریش همین یه جمله اس که گفتم . من follow رو خوب بلدم . اگه مشکلت موردیه، مثالتو همینجا بذار من برات توضیح می دم . |
RE: follow - saba_1984 - 20 مهر ۱۳۸۹ ۰۹:۴۵ ب.ظ
اول ممنون که توجه کردید. همون مثالی که همه جا هست .مثال مربوط به گرامر که هم تو کتاب پارسه اومده و هم راهیان ارشد و آهو میشه ریزتر واسم توضیح بدید که FOLLOW های E,T, F دقیقا چطور بدست امدند. کد: E->TE` |
RE: follow - parsaNA - 20 مهر ۱۳۸۹ ۱۱:۴۶ ب.ظ
پاسخ سوال صبا: اول سراغ E می ریم: خوب طبق تعریفی که قبلا گفتم باید ببینید در کل گرامر بعد از E چه حرفها یا پایانه هایی قرار می گیرند . درسته ؟ خوب طبق قانون کد: F->(E)|ID فالوی E شامل( و $ میشه . $ به طور پیش فرض در فالوی عنصر شروع گرامر قرار داره . خوب حالا می ریم سراغ `E: با توجه به قانون زیر کد: E->TE` می ریم سراغ T: با توجه به قانون زیر کد: E`->+TE`|LAMBDA خوب حالا طبق قانون زیر: کد: E->TE` کد: E->T می ریم سراغ 'T: با توجه به قانون زیر: کد: T->FT` می ریم سراغ F که نکته های مهمی داره: با توجه به قانون زیر: کد: T->FT` کد: T`->*FT|LAMBDA متغیر 'T می تونه لاندا بشه، پس می تونیم قانون قبلی رو به شکل زیر تعبیر کنیم: کد: T->F طبق قانون فوق هرچی بعد از T بیاد( یعنی فالوی T )بعد از F هم میاد . بنابراین فالوی T رو به فالوی F اضافه می کنیم . فالوی F میشه: * , +, $,( کل فالوها به صورت زیر در میاد:
|
RE: follow - mehr.iman - 05 دى ۱۳۸۹ ۱۲:۰۴ ق.ظ
ضمن تشکر از جناب parsaNA به خاطر توضیحات جامعشون،یه سوال در مورد followها برام پیش اومده. گرامر زیر رو در نظر بگیرین: A-->BCd C-->lombda|a در این شرایط آیا d هم جزء فالوی B حساب میشه؟(چون C به Lombda هم میره) (البته فک نکنم بشه!،ولی خواستم مطمئن شم) |
RE: follow - لهمشد - ۰۵ دى ۱۳۸۹ ۰۳:۴۱ ب.ظ
بله میشه: به این دلیل که در این قانون A-->BCd اگر Cd رو به عنوان FIRST ترمینال B بگیرد اونوقت d در مجموعه follow غیر ترمینا ل B اضا فه میشه پس جز follow هستش البته این نکته ای مهم هستش که یکی از سوالات کنکور هم بر همین اساس طرح شد |
RE: follow - mehr.iman - 05 دى ۱۳۸۹ ۱۰:۴۶ ب.ظ
(۰۵ دى ۱۳۸۹ ۰۳:۴۱ ب.ظ)لهمشد نوشته شده توسط: بله میشه:ممنون از پاسخت من همیشه First غیر پایانه بعدی رو اضافه میکردم نه مجموعه پایانه و غیر پایانهها رو،با این حساب باید First مجموعه پایانهها و غیر پایانه های بعد از عنصر مورد نظر رو به فالو اضافه کرد. (۰۵ دى ۱۳۸۹ ۰۳:۴۱ ب.ظ)لهمشد نوشته شده توسط: البته این نکته ای مهم هستش که یکی از سوالات کنکور هم بر همین اساس طرح شدمن اینو از خودم در آوردم!ولی اگه تستشو میدیدم با این حساب حتما اشتباه میزدم. |
RE: follow - zahra412 - 21 دى ۱۳۹۰ ۰۹:۱۹ ق.ظ
میشه لطفا follow های 'E را بگید؟ میخوام بدونم آیا LL1 هست یا نه؟ ممنون |
follow - - rasool - - 21 دى ۱۳۹۰ ۰۶:۰۲ ب.ظ
فالوی آن می شه: * و + و - و ] و [ . LL1 نیست. چون برخورد first/follow داریم. بازم خودتون بررسی کنید. |
RE: follow - zahra412 - 25 دى ۱۳۹۰ ۰۲:۱۷ ب.ظ
(۲۱ دى ۱۳۹۰ ۰۶:۰۲ ب.ظ)yaali نوشته شده توسط: فالوی آن می شه: * و + و - و ] و [ . ممنون خودمم همین نظرو دارم اما آقای آل شیخ توی کتاب پوران میگن ll1 هست |
follow - cprogrammer - 30 دى ۱۳۹۰ ۱۱:۵۰ ق.ظ
کتاب دکتر شاپوری خیلی خوب توضیح داده، اگر تونستید حتما تهیه کنید . |
RE: follow (مشکل در پیاده سازی قانون سوم) - azad_ahmadi - 28 اردیبهشت ۱۳۹۲ ۱۱:۴۳ ب.ظ
پیرو درخواست دوستی مبنی بر سوالات زیر این تاپیک دوباره احیا شده. (تاپیک درسی زیر خاکی) سوالات: ۱. چرا در فالوی E ترمینال id نیز قرار نگرفت؟ ۲. چرا در محاسبه first ترمینال id قرار میگیرد اما در follow نه؟ پس این | (یا) در (F->(E)|ID) به چه دردی می خوره؟ اصلا می تونید یه تعریف مشخص از علامت | (یا) بدهید که چطور باید تفسرش کرد؟ ۳. برای محاسبه فالوی E از کجا فهمیدیم که باید از F->(E)|ID شروع کنیم چرا از E->T و E'->TE شروع نکردیم؟ ۴. اگر به اون گرامر، قانون 'Z-->id E|E' T اضافه بشه فالوی E چه تغییری می کند؟ لطفا توضیحات ساده و کامل بدهید. ------------------------------------------------------------------------------------------------------------------------------------- جواب سوال اول: برای پیدا کردن fallow/E/ باید عناصری که بعد از غیرپایانه E در گرامر بیایند رو بعنوان fallow انتخاب کنیم. همونطور که در گرامر هم می بینیم بعد از غیرپایانه E در قانون F---> (E) | id پایانه ( قرار گرفته شده که بعنوان fallow/E/ انتخاب میشه. همونطور که می دونیم هم در ابتدای کار علامت $ به ابتدای قوانین اضافه می شه. به این صورت: E` ---> E$ پس علامت $ هم یکی دیگه از fallowهای E بحساب میاد. اما id اصلا بعنوان fallow/E/ بحساب نمیاد چون در هیچ صورتی بعد از کاهش E عبارت پایانه id رو نمی بینیم. جواب سوال دو: عبارت پایانه id رو میشه به این صورت از عبارت غیرپایانه E بدست آورد: E---->TE` .. T---->FT` .. F---->id پس id رو میشه جزو first/E/ بحساب اورد. اما چرا جزو fallow نیست رو در بالا توضیح دادم. علامت | یک علامت جداکننده هست که میگه از بین این چندتا قانون یکی رو باید انتخاب کرد. پس F->(E)|ID میگه که غیرپایانه F میتونه به این دوتا قانون تبدیل بشه. جواب سوال سه: اصلا نیازی نیست که ما از یک جای بخصوصی شروع به پیدا کردن fallow بری غیرپایانه ها باشیم. فقط کافیه قوانینی که برای پیدا کردن fallow وجود داره رو بلد باشیم، پس مهم نیست که از کدوم قانون اول استفاده کنیم. جواب سوال چهار: اگه اون قانون به گرامر اضافه بشه، تمام fallowهای Z به fallowی E هم اضافه میشه. چرا که با کاهش این قانون Z-->id E هرچی درانتهای Z باشه حتما در انتهای E هم هست. تو همین گرامر هم قانونی هست بصورت : [tex]T->FT`[/tex] دراین قانون هم تمام fallowهای T به fallowی T` اضافه میشه. یکی از قانونهای پیدا کردن fallow هست. براساس گرامر زیر: کد: E->TE` |
RE: follow (مشکل در پیاده سازی قانون سوم) - iBimS - 30 اردیبهشت ۱۳۹۲ ۱۲:۰۸ ق.ظ
سلام. خیلی ممنونم از شما دوست خوبم. ۱- اگر میشه در خصوص بدست آوردن FIRST و FOLLOW های E و 'E و OP بگویید؟ ۲- این int هم پایانه هستش؟ ------------------------------ ۳- FOLLOW یک پایانه چی میشه؟ ۴- زمانیکه مثلا فقط F-->id رو داریم (FOLLOW(F چی میشه؟ ۵- توی کتاب اهو در قانون FOLLOW گفته A-->aBb الان توی اینجا a و b حروف کوچک اند پس هر دو پایانه اند درسته؟ ممنون. |
RE: follow (مشکل در پیاده سازی قانون سوم) - azad_ahmadi - 31 اردیبهشت ۱۳۹۲ ۰۶:۲۳ ب.ظ
(۳۰ اردیبهشت ۱۳۹۲ ۱۲:۰۸ ق.ظ)iBimS نوشته شده توسط: سلام. خیلی ممنونم از شما دوست خوبم. سلام دوست عزیز. چون سوال قبلی تون به این تاپیک ربط داشت (سوال از همین تاپیک مطرح شده بود) لازم بود که اینجا جواب داده بشه. اما این سوال جدیدی که پرسیدید به این تاپیک ربط پیدا نمی کنه. اگر لطف کنید و برای این سوال یک عنوان جدید ایجاد کنید و سوالتون رو اونجا مطرح کنید ممنون خواهیم شد (در هرتاپیک یک سوال پرسیده میشه مگر اینکه سوال ادامه مباحث قبلی باشه). سوالتون رو بپرسید در اسرع وقت جواب داده میشه. سپاس. |