۰
subtitle
ارسال: #۱
  
سئوال از (CLR(1
سلام و درود.
توی کتاب کامپایلر آل شیخ پوران صفحه ۱۲۱ مثالی رو حل کرده من یه جاش ایراد دارم
اگه تصویر باز نشد
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
کلیک کنید.
مگه توی قسمت پیشگویی هایی که می کنیم نباید follow A و follow B رو بنویسیم ولی نمی دونم چرا اینجا اومده فقط یکیشون رو نوشته.
بعد یه مسلئه ی دیگه ای که هست اینه که چرا توی first S و 'first S عبارت لاندار رو ننوشته!!!!
با تشکر
توی کتاب کامپایلر آل شیخ پوران صفحه ۱۲۱ مثالی رو حل کرده من یه جاش ایراد دارم
اگه تصویر باز نشد
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
کلیک کنید.
مگه توی قسمت پیشگویی هایی که می کنیم نباید follow A و follow B رو بنویسیم ولی نمی دونم چرا اینجا اومده فقط یکیشون رو نوشته.
بعد یه مسلئه ی دیگه ای که هست اینه که چرا توی first S و 'first S عبارت لاندار رو ننوشته!!!!
با تشکر
۱
ارسال: #۲
  
RE: سئوال از (CLR(1
(۱۸ دى ۱۳۹۴ ۱۱:۵۴ ق.ظ)iCanDoIt نوشته شده توسط:
-------------------------------------------------------------------------------
(۱۸ دى ۱۳۹۴ ۱۱:۵۴ ق.ظ)iCanDoIt نوشته شده توسط: چرا توی first S و 'first S عبارت لاندار رو ننوشته!!!!گرامر مورد نظر این هستش:
[tex]S'\: \longrightarrow\: S[/tex]
[tex]S\: \longrightarrow\: AaAb\: |\: BbBa[/tex]
[tex]A\: \longrightarrow\: \lambda[/tex]
[tex]B\: \longrightarrow\: \lambda[/tex]
[tex]S\: \longrightarrow\: AaAb\: |\: BbBa[/tex]
[tex]A\: \longrightarrow\: \lambda[/tex]
[tex]B\: \longrightarrow\: \lambda[/tex]
محاسبهی [tex]first(S')[/tex] و [tex]first(S)[/tex] :
[tex]first(S') =\: first(S)\: =\: first(AaAb)\: \cup\: first(BbBa)[/tex]
حال چون [tex]A\: \longrightarrow\: \lambda[/tex] ، پس [tex]first(AaAb)\: =\: first(aAb) = \{a\}[/tex]
و چون [tex]B\: \longrightarrow\: \lambda[/tex] ، پس [tex]first(BbBa)\: =\: first(bBa)\: =\: \{b\}[/tex]
در نتیجه
[tex]first(S') = first(S)\: =first(AaAb)\: \cup\: first(BbBa)\: = \{a\}\: \cup\: \{b\}\: = \{a\: , b\}[/tex]
-------------------------------------------------------------------------------
(۱۸ دى ۱۳۹۴ ۱۱:۵۴ ق.ظ)iCanDoIt نوشته شده توسط: مگه توی قسمت پیشگویی هایی که می کنیم نباید follow A و follow B رو بنویسیم ولی نمی دونم چرا اینجا اومده فقط یکیشون رو نوشته.اگه علامت نقطه قبل از یک متغیر (A) بیاد(مثلا بصورت [tex]X\: \longrightarrow\: a.AB\: ,\: \{\gamma\}[/tex] )،آنگاه بایستی اون متغیر(A) رو گسترش بدیم و مجموعه پیشگویی آن برابر [tex]first(B\gamma)[/tex] خواهد بود.
در این سوال هم در [tex]S\: \longrightarrow\: .\: AaAb\: ,\: \{\: \$\: \}[/tex] ، چونکه نقطه قبل از متغیر A اومده،پس باید متغیر A رو گسترش بدیم و مجموعه پیشگویی آن برابر [tex]first(aAb\$)[/tex] یعنی [tex]\{a\}[/tex] خواهد شد.
پس عبارت [tex]A\: \longrightarrow\: .\: , \{a\}[/tex] اضافه خواهد شد.
از طرفی در [tex]S\: \longrightarrow\: .BbBa\: , \{\$\: \}[/tex] ، چونکه نقطه قبل از متغیر B اومده،پس باید متغیر B رو گسترش بدیم و مجموعه پیشگویی آن برابر [tex]first(bBa\$)[/tex] یعنی [tex]\{b\}[/tex] خواهد شد.
پس عبارت [tex]B\: \longrightarrow\: .\: , \{b\}[/tex] اضافه خواهد شد.
در ضمن این نکته رو هم بگم،که در محاسبه مجموعه پیشگویی، از follow(A) یا follow(B) استفاده نمیشه ، بلکه از زیرمجموعهای از follow(A) یا follow(B) استفاده شده. یعنی مجموعه پیشگویی مربوط به متغیر A، زیر مجموعهای از follow(A) خواهد بود نه لزوما خود follow(A) .
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close