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

مهندسی کامپیوتر ۸۹-پیدا کردن Follow - MiladCr7 - 18 دى ۱۳۹۳ ۱۰:۵۸ ب.ظ

سلام دوستان.توی این سوال گرامر بازگشتی چپ داره !!حالا سوال من اینه باید بازگشتی چپ رو حذف کنیم یا نه؟؟؟؟
اگه نه لطف میکنید بگید چجوری یباید تو این حالت Follow خواسته شده رو حساب کنیم؟؟[تصویر:  325806_7eg1uljzali1rmjxsc7t.jpg]

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - Hamid_0311 - 19 دى ۱۳۹۳ ۱۲:۰۷ ق.ظ

با سلام اینجا لازم نیست بازگشتی حذف کنیم خوب برای به دست اوردنش من اول مجموعه first هر متغیر به دست میارم که بعد بهش نیاز داریم

[tex]First\: A\: =\: a,\: \lambda[/tex]

[tex]First\: B\: =\: a,\: b,d,\: \lambda[/tex]

[tex]First\: C\: =\: d,\: \lambda[/tex]

[tex]First\: S\: =\: a,b,d,e[/tex]

حالا میریم سراغ مجموعه فالو عنصر شروع S هست و میدونیم دالر داخلش کپی میشه و تنها عضو فالوش هست چون S سمت راست نیومده که بخواهد فالو دیگه ای داشته باشه
[tex]Follow\: S\: =\: $[/tex]

[tex]Follow\: B\: =\: b,d,e[/tex]

[tex]Follow\: C\: =\: b,d,e[/tex]

[tex]Follow\: A\: =\: a,b,d,e[/tex]

اما بریم سراغ فالو گرفتن برای مجموعه ها خوب بعدی B
سمت راست ببینید بعد از متغیر B چیا اومده تو قانون ۱ سمبل e اومده و توی قانون ۵ هم سمبل b خوب اضافه می کنیم حالا توی قانون ۲ بعد از B متغیر C اومده پس First C به غیز ار لاندا داخل فالو B کپی میکنیم که میشه d اما اینجا یک نکته را میگم واسه بقیه موارد ببینید توی First C ما لاندا داشتیم خوب حالا اگر نگاه کنید بعد از C ما هیچ حرفی نداریم پس باید فالو متغیر سمت چپ قانون ۲ داخل فالو B کپی بشه اما اینجا چون خود B هست چیزی اضافه نمی کنه اما اگر مثلا جای B متغیر A در سمت چپ قانون ۲ بود فالو A هم داخل فالو B کپی میشد اما بریم سراغ ادامه بحثمون
توی قانون ۷ متغیر B اخر اومده پس باید فالو C داخلش کپی بشه دیگه چیز دیگه ای نیست و وقتی فالو C به دست اوردیم داخل فالو B کپی میکنیم اما بریم متغیر بعدی

متغیر C خوب سمت راست فقط داخل قانون دوم اومده و باید فالو B داخل فالو C کپی بشه پس یعنی فالو B با فالو C برابر میشه خوب

متغیر بعدی A سمت راست کجاها اومده؟ داخل قانون دوم خوب بعدش متغیر B پس ما First B به غیر از لاندا داخلش کپی میکنیم که میشه a,b,d
اما چون First B لاندا هم داره فرض میکنیم B لاندا باشه بعد از B توی قانون دوم چی هست؟ متغیر C پس First C هم به غیر لاندا داخلش کپی میکنیم که میشه d که قبلا کپی کردیم
(a,b,d)


حالا چون داخل First C هم لاندا بود باید فالو B هم داخل A کپی کنیم
که میشه b,d,e اما چون b,d هست فقط e کپی میشه
خوب A توی قانون ۷ هم اومده و بعدش متغیر B هست پس First B به غیر لاندا باید داخلش کپی شه اما یه بار اینکارو کردیم و لازم نیست ولی چون Frist B لاندا داره پس باید فالو C هم داخل فالو A کپی بشه اینجا چون فالو B با C برابر بود و قبلا فالو B کپی کردیم پس چیز جدیدی اضافه نمیکنه

خوب تموم شد جواب هم گزینه ۳ هست موفق باشیدBig Grin (طومار نوشتم فحش ندید Big Grin)

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - MiladCr7 - 19 دى ۱۳۹۳ ۱۲:۱۳ ق.ظ

ممنونم از پاسختون!!!!میشه بگید First ها تو حالتی که مثل این سوال بازگشتی چپ داریم چجوری به دست میاد؟؟؟

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - Hamid_0311 - 19 دى ۱۳۹۳ ۱۲:۱۶ ق.ظ

سمت راست نگاه کنید مثلا قانون شماره ۵ که ماله B هست چی می تونه تولید کنه؟ یا لاندا میده یا چند بار تکرار میشه و بعد B با لاندا جایگزین میشه خوب چی تولید کرد؟ یه تعداد b
یا توی قانون ۳ برای متغیر A هم یا لاندا تولید می کنه یا یه تعداد a پس اینا میشن جز first
بقیه قسمت ها هم فک کنم واضحه اگه لازمه توضیح بدهم

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - MiladCr7 - 19 دى ۱۳۹۳ ۱۲:۲۰ ق.ظ

برای B رو توضیح بدید ممنون میشم

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - Hamid_0311 - 19 دى ۱۳۹۳ ۰۱:۲۱ ق.ظ

برای B خوب باید ببینم سمت چپ چه قانون های متغیر B هست قانون شماره ۲ و ۵ و ۶
اول قانون ۵ چی هست لاندا پس اضافه میشه قانون ۶ چی؟ قانون ۶ چی تولید می کنه یه تعداد b تولید می کنه دیگه پس b هم اضافه میشه این دو تا قانون که تموم شد اما میریم سراغ قانون ۲

خوب قانون ۲ میگه با A شروع میشه پس باید تمام First A به جز لاندا را داخل First B کپی کنیم

اول میایم ببینم First A چیه خوب سمت چپ قانون ۴ و ۳ ما متغیر A داریم قانون ۴ که لاندا را تولید می کنه پس میزاریمش داخل First A
اما قانون ۳ یه تعداد a را تولید می کنه و وقتی به پایانی بره شروعش چی می تونه باشه؟
[tex]A\: \longrightarrow\: Aa \ \longrightarrow\: \lambda aaa\: =\: aaa[/tex]
خوب چی تولید کرد یه رشته تولید شد اولش چه سمبل پایانی هست؟ a اینطوری بگیم هر رشته این که تولید می کنه اولش چه پایانی می تونه باشه؟ a یا لاندا پس این دوتا را فقط تولید می کنه

حالا گفتیم First A به غیر از لاندا داخل First B کپی میشه پس یعنی A کپی میکنیم خوب تو قانون ۲ فرض کن A لاندا باشه
خوب بعدش چی اومده متغیر B خوب ما داریم B به دست میاریم و ۲ تاشو هم به دست اوردیم پس هر چیزی به دست بیاد تکراریه اما اگر دقت کنید توی B لاندا هست پس ما فرض می کنیم که B هم لاندا باشه خوب بعدش متغیر C هست که First C داخلش کپی میکنیم که میشه d
(دقت کنید لاندا چون از قبل بود کپیش نکردم) خوب تموم شد بازم اگر سوالی بود درخدمتیمBig Grin

RE: مهندسی کامپیوتر ۸۹-پیدا کردن Follow - mostafa2012 - 29 دى ۱۳۹۳ ۱۰:۳۲ ب.ظ

(۱۹ دى ۱۳۹۳ ۱۲:۲۰ ق.ظ)miladcr7 نوشته شده توسط:  برای B رو توضیح بدید ممنون میشم

به نظر من همیشه اعمال کنید سپس ببینید چیه و اون ترمینال اولیش رو بنویسید.....
مثلا یکی از قاعده ها (قواعد تولید مثال فرضی من برای آموزش) اینه [tex]D\: \rightarrow\: BCD[/tex]

خب بااین فرض که
first(A) هم این هاست : a,lamda
first(B) هم این هاست : b,lamda
first(B) هم این هاست : c,lamda

حالا به من بگید که follow(B) چی هس؟؟؟
خب میشه در واقع first© => حال ببینید first© چی هس؟؟>>طبق فرض c و لاندا
خب گفتیم از روش من=>>> اول اعمال کنید..... => میشه BcD و BD خب حالا بگید follow(B) چیه؟؟؟
بله درست گفتید...c و first(D)
خب حالا برید ببینید first(D) چیه..... و همین روال .....

اگر وقت زیاد دارید= فیلم زیر رو دانلود کنید خیلی مفیده!!!!

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


به همین راحتی !!!Big Grin

موفق وموید !
التماس دعا