پیرو درخواست دوستی مبنی بر سوالات زیر این تاپیک دوباره احیا شده. (تاپیک درسی زیر خاکی)
سوالات:
۱. چرا در فالوی 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`
E`->+TE`|LAMBDA
T->FT`
T`->*FT|LAMBDA
F->(E)|ID