CompilerAutomata_HW 4_92_1.pdf

‫هس بخ‬
‫هب انم تی ش‬
‫اوتومتا و رطاحی کامپایلر‬
‫تکلیف چهارم‬
‫نیمسال اول ‪95-94‬‬
‫دانشکده مهندسی کامپیوتر‬
‫مدرس ‪ :‬دکتر جابریپور‬
‫تاریخ تحویل‪ :‬شنبه ‪ 9‬آبان‬
‫توجه‪ :‬تحویل سواالتی که با * مشخص شدهاند و سواالت کالس درس الزامی است‪.‬‬
‫‪ )*( -1‬برای ماشین مقابل‪ DFA ،‬معادل با کمترین تعداد ‪ State‬را‪ ،‬از روش پرکردن جدول بدست آورید‪.‬‬
‫‪ -2‬گرامر ‪ G‬را در نظر گرفته و به سواالت مطرح شده پاسخ دهید‪.‬‬
‫𝑅 | 𝑋𝑆𝑋 → 𝑆‬
‫𝑎𝑇𝑏 | 𝑏𝑇𝑎 → 𝑅‬
‫𝜖 | 𝑋 | 𝑋𝑇𝑋 → 𝑇‬
‫𝑏|𝑎→ 𝑋‬
‫‪)a‬‬
‫مجموعه ترمینالها (واژههای زبان) کدام است؟‬
‫‪)b‬‬
‫مجموعه واژههای نحوی را بیابید‪.‬‬
‫‪)c‬‬
‫سه رشته عضو زبان و سه رشته خارج از زبان بیابید‪.‬‬
‫‪)d‬‬
‫زبان ‪ G‬را توصیف کنید‪.‬‬
‫‪)e‬‬
‫درستی گزارههای زیر را تحقیق کنید‪:‬‬
‫‪1‬‬
‫‪0‬‬
‫𝐸‬
‫𝐹‬
‫𝐻‬
‫𝐻‬
‫𝐼‬
‫𝐵‬
‫𝐵‬
‫𝐶‬
‫𝐸‬
‫𝐵‬
‫𝐶‬
‫𝐷‬
‫𝐸‬
‫𝐹‬
‫𝐺‬
‫𝐻‬
‫𝐼‬
‫𝐴‬
‫𝐴→‬
‫𝐵‬
‫𝐶∗‬
‫𝐷‬
‫𝐸‬
‫𝐹∗‬
‫𝐺‬
‫𝐻‬
‫𝐼∗‬
‫𝑎𝑏𝑎 ⇒ 𝑇‬
‫‪.i‬‬
‫𝑎𝑏𝑎 ∗⇒ 𝑋‬
‫‪.ii‬‬
‫𝑎𝑏𝑎 ∗⇒ 𝑋‬
‫‪.iii‬‬
‫‪ -3‬با توجه به گرامر مقابل برای رشته های زیر هر تعداد که اشتقاق چپ دارند نوشته و برای هرکدام درخت اشتقاق رسم کنید‪.‬‬
‫الف)‪𝑎 + 𝑎 :‬‬
‫ب)‪𝑎 + 𝑎 ∗ 𝑏 :‬‬
‫‪ -4‬برای هریک از زبانهای زیر یک گرامر مستقل از متن ارائه دهید‪.‬‬
‫𝐸‪𝐸 →𝐸+‬‬
‫𝐸∗𝐸→ 𝐸‬
‫𝑎→𝐸‬
‫‪)a‬‬
‫رشتههایی به صورت 𝑛‪.𝑎𝑛 𝑏 2‬‬
‫‪)b‬‬
‫رشتههایی از ‪ 0‬و ‪ 1‬که طولشان فرد است و سمبل وسط ‪ 0‬است‪.‬‬
‫‪)c‬‬
‫(*) رشتههایی از ‪ 0‬و ‪ 1‬که به صورت 𝑅 𝑤𝑤 هستند‪( .‬رشتهای که به دنبال آن برعکسش آمده)‪.‬‬
‫‪)d‬‬
‫(سوال امتیازی) رشتههایی از ‪ 0‬و ‪ 1‬که به صورت 𝑤𝑤 نیستند‪ .‬یعنی نمیتوان رشته را از وسط به دو نیم برابر تقسیم نمود‪.‬‬
‫‪)e‬‬
‫(*) رشتههایی از ‪ 0‬و ‪ 1‬که زبان آن مکمل 𝑛 𝑏 𝑛𝑎 باشد‪.‬‬
‫‪ )*( -5‬ثابت کنید هر زبان منظمی‪ ،‬مستقل از متن است‪.‬‬
‫‪ -6‬یک ‪ CFG‬را در صورتی از راست خطی گوییم که سمت راست هر قاعده تولید آن فقط یک واژه نحوی داشته باشد و این واژه بعد از همه‬
‫ترمینالها آمده باشد‪ .‬یعنی تمام قواعد تولید به یکی از دو شکل 𝑤 → 𝐴 یا 𝐵𝑤 → 𝐴 هستند بهطوریکه ‪ A‬و ‪ B‬واژه نحوی و 𝑤 یک رشته از‬
‫ترمینالها میباشد ثابت کنید زبان چنین گرامرهایی منظم است‪.‬‬
‫‪ -7‬ثابت کنید برای هر زبان منظم‪ ،‬یک گرامر از راست خطی موجود است‪.‬‬
‫𝜖| 𝑆𝑏𝑆𝑎|𝑆𝑎 → 𝑆‬
‫‪ -8‬برای گرامر مقابل موارد زیر را بررسی کنید‪.‬‬
‫‪)a‬‬
‫(*) گرامر مبهم است‪ (.‬با سه روش درخت پارس‪ ،‬اشتقاق راست و اشتقاق چپ و با استفاده از رشته 𝑏𝑎𝑎)‬
‫‪)b‬‬
‫آیا صورت غیر مبهم دارد؟‬
‫∗‬
‫‪( -9‬سوال امتیازی) اگر 𝑖𝑏 نشاندهنده رشتههای )‪ 1(0 + 1‬باشد که برای هر ‪ 𝑖 ≥ 1‬بیانگر نمایش دودویی آن عدد است یک گرامر مستقل از‬
‫متن بسازید که در آن }‪ Σ = {0 , 1, #‬و زبان آن }‪ 𝐿(𝐺) = {(0 + 1 + #)+ } − {𝑏1 # … #𝑏𝑛 𝑛 ≥ 1‬باشد‪.‬‬
‫تذرکات‪:‬‬
‫‪ -1‬کتاب زیر مرجع اصلی درس است‪ ،‬مطالعه آن میتواند کمک شایانی به فهم مطالب کند‪.‬‬
‫‪Introduction to Automata Theory, Languages, and Computation; J.E.Hopcraft, R.Montwani,‬‬
‫‪J.D.Ullman, 3rd Edition‬‬
‫‪Compilers, Principles, Techniques &Tools; A.V.Aho, M.S.Lam, R.Sethi, J.D.Ullman, 2nd Edition‬‬
‫‪ -2‬تمرینات خود را روز شنبه‪ 9 ،‬آبانماه‪ ،‬ساعت ‪ 12‬سر کالس حلتمرین تحویل دهید‪ .‬از دیرتر تحویل دادن تمرین خود بنابه هر‬
‫دلیلی بپرهیزید‪.‬‬
‫‪ -3‬در صورتی که تمرینی را ایمیل میکنید‪ ،‬در اسرع وقت نسخه فیزیکی آن را نیز تحویل دهید!‬
‫‪ -4‬همه برگههای خود را به هم منگنه کرده و سپس تحویل دهید!‬
‫‪-5‬‬
‫از تقلب به شدت بپرهیزید! خودتان سواالت را حل کنید! (در صورت کشف برای کل تکلیف نمره ‪ -100‬برای همه نفرات لحاظ‬
‫خواهد شد)‬
‫‪ -6‬سواالت خود را به گروه درس یا ایمیل اعضای حلتمرین ارسال نمایید‪( .‬در صفحه درس موجود است)‬
‫موفق باشید‬