assignment4.pdf

‫درس‬
‫کامپایلرها‬
‫‌‬
‫طراحی‬
‫تمرین‬
‫چهار‬
‫موضوع تمرین‬
‫‪Lexical Analysis and Parsing‬‬
‫زمان تحویل‬
‫سه‌شنبه‌‪‌82‬آذر‬
‫منظم‌زیر‪‌،‬ساده‌ترین‌تعبيري‌که‌میتوانيد‌ارائه‌دهيد‪‌.‬‬
‫‌‬
‫‪‌-۱‬براي‌عبارت‌هاي‌‬
‫‪0 (0 | 1)* 0‬‬
‫*)*‪((ϵ | 0) 1‬‬
‫)‪(0 | 1)* 0 (0 | 1) (0 | 1‬‬
‫*‪0* 1 0* 1 0* 1 0‬‬
‫*)*)‪(00 | 11)* ((01 | 10) (00 | 11)* (01 | 10) (00 | 11‬‬
‫‪A‬‬
‫‪B‬‬
‫‪C‬‬
‫‪D‬‬
‫‪E‬‬
‫میباشد‪.‬‬
‫هاي‌از‌مجموعهي‌حروف‌‪‌a‬و‪‌ ‌‌b‬‬
‫‌‬
‫‌‬
‫ي‌تمام‌رشته‬
‫‌‬
‫ترین‌تعبير‌براي‌گرامر‌روبرو‪‌،‬مجموعه‬
‫‌‬
‫به‌طور‌مثال‌ساده‬
‫*)*)*‪((a* b*)* (b* a‬‬
‫براي‌هر‌کدام‌از‌زبان هاي‌زیر‪‌،‬عبارت‌منظم‌معادل‌بنویسيد‪‌.‬در‌این‌سوال‪‌،‬خود‌را‌به‌حروف‌عادي‌و‌حروف‌خاص‌[‪‌,^‌,$‌,.‌,|‌,+‌,*‌,)‌,(‌,]‌,‬‬
‫‌‬
‫‪‌-8‬‬
‫ي‌حروف‌آمده‌است‪‌،‬منظور‌حروف‌کوچک‌انگيليسی‌میباشد‪.‬‬
‫‌‬
‫‌‬
‫محدود‌کنيد‪‌.‬هر‌جا‌کلمه‬
‫?‌‬
‫■‬
‫رشتهاي‌از‌حروف‌که‌در‌آن‌از‌هرکدام‌از‌حروف‌صدا‌دار‌انگليسی‌(‪‌)a e i o u‬دقيقا‌یک‌بار‌به‌ترتيب‌(نه‌لزوما‌پشت‌سر‌هم)‌‬
‫‌ ‌‬
‫آمده‌باشد‪.‬‬
‫■‬
‫تشکيل‌شدهاند‌و‌حروف‌به‌ترتيب‌الفبا‌هستند‪‌.‬الزم‌نيست‌تمامی‌این‌حروف‌باشند‌ولی‌اگر‌باشند‌‬
‫‌‬
‫‪‌a‬تا‌‪‌f‬‬
‫رشتههایی‌که‌از‌حروف‌ ‌‬
‫باید‌به‌ترتيب‌باشند‪.‬‬
‫■‬
‫باشد‪‌.‬کوتيشنها‌باید‌باالنس‌‬
‫‌‬
‫هایی‌که‌بين‌*‪‌/‬و‌‪‌*/‬قرار‌دارند‌و‌هيچ‌‪‌*/‬هم‌در‌بين‌آن‌نمیآید‌مگر‌اینکه‌به‌صورت‌"‪‌"*/‬‬
‫‌‬
‫‌‬
‫کامنت‬
‫باشند‌یعنی‌‪‌/*‌"‌"‌/*‌"‌"‌*/‬یک‌رشته‌مجاز‌نيست‪.‬‬
‫■‬
‫رشت‌ههایی‌از‌‪‌۰‬و‌‪‌۱‬که‌تعداد‌‪‌۰‬هاي‌آن‌زوج‌و‌تعداد‌‪‌۱‬هاي‌آن‌فرد‌باشد‬
‫■‬
‫رشتههایی‌از‌‪‌۰‬و‌‪‌۱‬که‌زیررشته‌‪‌۰۱۱‬را‌شامل‌نمیشوند‪.‬‬
‫‌‬
‫■‬
‫را‌شامل‌نمیشوند‪‌ .‬‬
‫‌‬
‫رشتههایی‌از‌‪‌۰‬و‌‪‌۱‬که‌زیردنباله‌‪‌۰۱۱‬‬
‫‌‬
‫‌‬
‫‪‌-۳‬تمام‌دي‪-‬اف‪-‬اي‌گرامرهاي‌سوال‌قبل‌را‌در‌ابزار‌‪‌VAS‬پياده‌سازي‌نمایيد‌و‌هر‌کدام‌را‌با‌‪‌3‬مثال‌امتحان‌نمایيد‪‌.‬مثال‌هایی‌که‌با‌صورت‌‬
‫مساله‌مرتبط‌باشد‪‌.‬مثال‌در‌مورد‌سوم‌مثالی‌با‌کوتيشن‌هاي‌نا‌هماهنگ‌بزنيد‌و‌تصویر‌نتيجه‌را‌در‌مستندات‌قرار‌دهيد‪‌Screenshot‌.‬از‌‪‌۳‬‬
‫مثال‌خود‌تهيه‌کنيد‌و‌آن‌را‌در‌فایلی‌ضميمه‌کنيد‌و‌به‌آدرس‌‪ pooya97@gmail.com‬با‌عنوان‌‪COMPILER91-STDID-‬‬
‫‪‌HW4‬بفرستيد‪‌.‬نام‌فایل‌‪‌pdf‬نيز‌به‌همين‌صورت‌باشد‪ .‬نمونه‪‌ :‬‬
‫ابزار‌‪‌VAS‬را‌از‌‪‌ http://www.cs.usfca.edu/~jbovet/vas.html‬دانلود‌کنيد‪‌ .‬‬
‫توصيف‌کنيد‌هریک‌از‌‌گرامرهاي‌زیر‪‌،‬چه‌زبانی‌را‌بيان‌میکند‪‌:‬‬
‫‌‬
‫‪‌-4‬‬
‫‪S→0S1|01‬‬
‫‪S→+SS|-SS|a‬‬
‫‪S→S(S)S|ϵ‬‬
‫‪S→aSbS|bSaS|ϵ‬‬
‫)‪S→a|S+S|SS|S*|(S‬‬
‫●‬
‫●‬
‫●‬
‫●‬
‫●‬
‫‪‌-5‬در‌سوال‌قبل‬
‫●‬
‫)‪‌ LL(1‬بودن‌و‌یا‌نبودن‌هر‌گرامر‌را‌مشخص‌کنيد‪.‬‬
‫●‬
‫از‌گرامر هاي‌باال‌مبهم‌هستند‌یا‌نه‪‌.‬براي‌گرامرهاي‌مبهم‌گرامر‌نامبهم‌دیگري‌ارایه‌کنيد‌که‌همان‌زبان‌را‌‬
‫‌‬
‫مشخص‌کنيد‌که‌هریک‌‬
‫توصيف‌کند‪.‬‬
‫‌‬
‫را‌براي‌آن‌رسم‌کنيد‪‌.‬رشتهي‌زیر‌را‌به‌روش‌‬
‫‌‬
‫واژههاي‌نحوي‌را‌براي‌گرامر‌زیر‌بدست‌آورید‌و‌جدول‌پارس‌(‪‌LL)1‬‬
‫‪‌First‌-6‬و‌‪‌ ‌Follow‬‬
‫)‪‌LL(1‬به‌صورت‌مرحله‌به‌مرحله‌پارس‌کنيد‌و‌محتویات‌انباره‌را‌در‌مراحل‌مختلف‌نشان‌دهيد‪:‬‬
‫‪for ( id and id = id ; id ; ) { ; } $‬‬
‫‪8. E → V‬‬
‫‪9. V → id X‬‬
‫‪10. X → and V‬‬
‫‪11. X → ϵ‬‬
‫} ‪12. B → { L‬‬
‫‪13. L → S L‬‬
‫‪14. L → ϵ‬‬
‫; ‪1. S → A‬‬
‫‪2. S → for ( A ; C ; A ) S‬‬
‫‪3. S → B‬‬
‫‪4. A → V = E‬‬
‫‪5. A → ϵ‬‬
‫‪6. C → E‬‬
‫‪7, C → ϵ‬‬