کامپیوتر و IT و اینترنتعلوم مهندسی

اصول طراحی کامپايلر

صفحه 1:
ae SS ‏ريام ايه‎ lath ‏اصول طراحي كامبايلر‎ ‏هه‎ تهیه کننده: سیده فاطمه نوراني گروه: کامپیوتر ] 33222222

صفحه 2:
a ‏شناسنامه‎ 7 عنوان منبع: کامپایلرها 3 مترجم: دلداري 3 انتشارات: باغانی (خراسان) 3 منبع اصلی: ‎Oriwpes, Techaques, vad Tork‏ ۳

صفحه 3:
WY ‏جایگاه درس در رشته کامپیوتر‎ 7 ضرورت این درس: * ضرورت نیاز به زبانهای سطح بالا © ضرورت ترجمه برنامه های نوشته شده با زبان سطح بالا به برنامه به زبان ماشين تنوع زبانهای برنامه نویسی سطح بالا ۴ دروس پیش نیاز: نظریه زبانها و ماشین. طراحی و پیاده سازی زبانها ۴ نوع درس: اجباري تعداد کل ساعات تدریس:30 ۳ تعداد جلسات تدریس:10

صفحه 4:
فصل اول» مقدمه اي پر کامپاپلر 7 سصل وله ‎aA ak oft AOA‏ ۲ اهداف رفتاری: دانشجو پس از مطالعه این فصل با مفاهیم زیر آشنا خواهد شد: © برنامه هاي تحلیل کننده 1 ر مرس آشنيي با بخش تحلیل و بخش سنتزکامپایر " ابزارهای ساخت کامپایلر

صفحه 5:
WY 1-1 نموذ 1 نمونه اي از برنامه هاي د از برنامه هاي تحليل كننده ۱ ويرايشگرهاي ساختار ِ چاپگرهاي ۳۳ ۳۳2۵7 ۱ بر رسي كننده هاي ایستا مفسرها : شکل دهنده هاي متن . كاببايارهاي سيليسيومي مفسرهاي يرس و جو ‎١‏

صفحه 6:
1-2 تعریف کامپایلر 1- ترجمه برنامه از زبان مبدا به برنامه معادل دز زبان مياني مانند اسمبلي 2- گزارش وجود خطاها را در برنامه مبدا به کاربر. برنامه مقصد برنامه مبداً

صفحه 7:
WY ‏طبقه بددي کامپاپلرها‎ 1-3 دسته بندي کامپایلرها بر اساس چگونگي ساخت و عملیات: تك گذره "1 چند گذره "ا اشکال زدا و ‎Lowber‏ ‎dings‏ ساز ‎a ee ee

صفحه 8:
WY ‏عملیات کامپاپلر‎ 1-4 بخ تخل تجزیه برنامه مبدا به اجزاي تشکیل دهنده اش تولید کد مياني از برنامه مبدا نیاز به بیشترین روشهاي خاص

صفحه 9:
W ۶۴ Eee ‏دازض زبان‎ ‏نتم پر‎ 1-5 سیستم ۳ ‎My‏ داز ‎te ١ 3‏ پیش پر ‎te‏ كاميايلر 5 یشگر الحاق *** با ركننده و ويران

صفحه 10:
1-5-1 پیش پردازشگر T e ‏جمع آوري ماژولهاي برنامه مبدا موجود در فايلهاي جداگانه‎ @; ۲ بدیل بخشهاي < شوه فادزشت دور اند ‎rn‏ شنم خلاصه شده بنام درشت دستورات به احکام

صفحه 11:
1-5-2 ارتباطات در سپستم پردازش زپان

صفحه 12:
1-6 سه فاز تحلیل در عمل کامپایل تشخیص نشانه ها تحلیل خطي(تحلیل لغوي یا پویش) كروه بندي نشانه هاي برنامه مبدا به | + 5 یات کر | تحلیل سلسله مرأتبي(تحلیل نحوي یا تجزیه) بررسي خطاهاي معنايي برنامه تحلیل معنایي

صفحه 13:
1- تحلیل لغوي 2- تحلیل نحوي 3- تحلیل معنايي توليد كد مياني 4- توليد كد 5- بهينه سازي 6- توليد کد نهايي

صفحه 14:
TP b LoL Sy ‏دار مرل.‎ 0 گروه کامپیوتر اصول طراحي کامپایلرها صفحه: 14 |

صفحه 15:
WY 276... ‏مراحل كامبايلر- تحليل كر لفوي‎ 1-7-2 مرور متن برنامه به صورت حرف به حرف | تبدیل آنها به نشانه ها ( كلمات كليدي: عملگر, جداکننده. ثوابت و شناسه)

صفحه 16:
1-7-2 مراحل کامپایل- تحلیل گر نحوي | (2

صفحه 17:
1-7-2 مراحل کامپایل - تحلیل گر معنايي بررسي برنامه مبدا براي یافتن خطاهاي معنايي جمع آوري اطلاعات مربوط به نوع داده ها گروه کامپیوتر اصول طراحي کامپایلرها خسن

صفحه 18:
1-7-2 مراحل کامپایل - تولید کد مياني

صفحه 19:
1-7-2 مراحل کامپایل - بهینه ساز كد بهینه كردن كد مياني ( حذف متغيرهاي مياني غیر ضروري) سرعت بخشیدن به تولید کد نهايي |_ اصول طراحي کامپایلرها

صفحه 20:
1-7-2 مراحل کامپایل - تولید کننده کد نهابي تبدیل کد مياني بهینه به کد جابجاپذیر یا اسمبلي تعیین مكانهاي حافظه براي متغيرهاي برنامه | انتساب متغیرها به ثبات هاي ماشین گروه کامپیوتر .|| _ اصول طراحي کامپایلرها | صفحه: 20

صفحه 21:
WY ‏مراحل کامپایل - مدیریت جدول نماد‎ 1-7-2 تعریف ساختمان داده اي شامل ر کورد براي شناسه و ميدانهايي براي صفات أن فراهم كردن شناسايي سريع ركورد شناسه بمنظور ذخيره و بازيابي داده هايش گروه کامپیوتر اصول طراحي كاميايلرها صفحه: 21

صفحه 22:
2 ۳ / ‏ها‎ a) ۲ 8 ‏نت‎ ws 9 ‏وه‎ ‎so ‎Ow KO, Rd 44 9, 0 5 Went Kot ‏ىنث‎ ‎0

صفحه 23:
1-8 ابزارهاي ساخت کامپایلر ‎Ml‏ مولدهاي تجزیه کننده ‎٩‏ تولید کننده هاي پویشگر ۷ موتورهاي ترجمه نحوگرا ‎Ml‏ مولدهاي کد خود کار ‏۲ موتورهاي جریان داده ‎

صفحه 24:
‎WY ۱‏ فصل دوم : نحو زبان و تجزيه ‏اهداف رفتارى: دانشجو يس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: ‏” كرامر ‏اشتقاق و تجزیه ‏"تعریف نحوگرا ‏7 درخت نحوی ‏۴ تجزیه بالا به پایین و ‎gel‏ به بالا ‏آترجمه ‎

صفحه 25:
WY گرامر: روش ساخت رشته هايي متشکل از نمادها کاربرد وسیله تشخیص عضویت يك رشته در زبان مشخص کننده ساختار يك زبان گروه کامپیوتر اصول طراحي کامپایلرها صفحه؛ 25

صفحه 26:
2-2 تعریف رياضي گرامر گرامر 4 گانه ( ,6 ,10,۲ - © 20 مجموعه غیر پایانه ها - ۳" مجموعه پایانه ها 8 2 عضو شروع 6 < مجموعه قولنینتولید یشته هاي‌زبان

صفحه 27:
مثال از يك گرامر ( © ,© 2ه +۶, td} 6-0 P={G9P*d, PHP/S , ‏(ج+حبم‎ sd * dt td ‏رشته توليدي نمونه‎

صفحه 28:
2-3 اشفاق ۲ فرآيند توليد رشته از كرامر با شروع از عنصر ابتداي كرامر و استفاده از قوانين. از جب: در هر قدم انجام جايكزيني روي سمت جب ترين غيريايانه انواع اشتقاق #۳ | از راست: در هر قدم انجام جايگزيني روي سمت راست ترین غیرپایانه

صفحه 29:
UY ‏مثال از اشتقاق‎ توليد رشته ‏ لم * لم + لم اشتقاق راست

صفحه 30:
5 درخت تجزيه نشان دهنده جكونكي اشتقاق رشته اي از زبان از نماد شروع كرامر 2-3-1 درخت 42535 ساخت درخت تجزيه - © ريشه درخت قانون 271 + 9) > ©) كره اي در درخت و 071 فرزندان آنأ قانون ها ب 9) > © كره اي در درخت و ك, 76 فرزندان آن ‎Gy >) la SLL,‏ كوجك) تنها در بركها ديده مي شوند ‎ ‏گروه کا اصول طراحي کامپایلرها || صفحه: 30 ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 31:
2-3-2 درخت اشتقفاق رخت تجزیه اي نشان دهنده مراحل اشتقاق بکار رفته (راست يا چپ) مثال لل * لم + لم گروه کامپیوتر اصول طراحي کامپایلرها | صفحه: 31

صفحه 32:
2-4 گرامر میهم وجود دو اشتقاق راست يا دو اشتقاق جب راي يك رشته در گرامر مثال ۱*۲ +۲ اشتقاق چپ اول لم * + لج © ۶ + + 6 ۵۶ + رح © + لير د © + © جه © [ ل * لم + لج © * © + رج © + لور ب © + © ب © كروه كامبيوتر اصول طراحي كاميايلرها صفحه. 32 | اشتقاق جب دوم

صفحه 33:
نشان گذاري يك عبارت مانند 6 1- اگر 5 متغير و يا ثابت باشد نشان گذاري آن خودش مي شود. 2- اگر ۶ عبارتي بشکل 152 0۵ 81 باشد که 08 عملگر دودويي است نشان گذاري آن عبارتست از 00 ۳2 ۳1 که ۲2 ,۳1 نشان گذاري , 151 2 هستند. . 1 3- اككر 8 عبارتي بشكل (51بباشد. نشان كذاري براي 151 همان نشان كذاري براي 8 مي باشد. 0000 8ه جك ههه

صفحه 34:
2-6 تعریف نحو گرا کاربرد براي ترجمه ساختارهاي زبان. ترجمه ساختار را بر حسب صفات مربوط به مولفه هاي نحوي © تعيين نوع ساختارء مکان اولین دستور تولید شده در برنامه هدف يا تعداد دستورات براي کامپایلر

صفحه 35:
تسعریفش حوي‌جهنهار 024 7 هر نماد در گرامر مجموعه اي از صفات دارد. صفات و محاسبه آنها 7۱ در هر مولد یا قانون گرامر مجموعه اي از قواعد معنايي براي محاسبه مقادیر صفات نمادها وجود دارد.

صفحه 36:

صفحه 37:
با مسبت ‎wails Il‏ مس + ‎worl‏ وه -, اا نصحت | دود مسا و و اسب د صم لوم ‎oO,‏ © عم ‎wre 0 id, ‎wwe ‏و‎ 2, ‎ ‎ ‏تعریف نحوگرا براي ترجمه عبارات ميانوندي به عبارت معادل پسوندي ‎

صفحه 38:

صفحه 39:
2-7-2 انواع درخت نحوي درخت نحو مجرد درخت هر گره نماینده يك عملگر و فرزندان آن عملوند آن نحو واقعي (درخت تجزیه اي که عملگرها خود فرزند محسوب مي شوند [_ اصول طراحي کامپایدرها . |[ صفحه. 39|

صفحه 40:
WY ۲ ‏عل عكري تيت‎ كرامر مستقل از متني كه قطعه برنامه هايي که عملیات معنايي ند در سمت راست قوانین آن اضافه شده اند تفاوت با ترجمه نحوگرا .نمایش ترتیب ارزشيابي قوانین بطور صریح گروه کامپیوتر اصول طراحي کامپایلرها صفحه: 40 [

صفحه 41:
2-8-1 درخت تولید شده براي الگوي ترجمه طریقه ساخت درخت ‎NN,‏ 2 mi.) يك برگ اضافي ساخته شده براي عمل معني ساخترفرزند لضا افيبرليديخت) متصلن مودناینف رزند بسه گره مربوط به قانون‌خود در -6 گولمر کروه کامپیوتر اصول طراحي کامپایلرها صفحه: 41 |

صفحه 42:
2-9 تجزیه ( پارسینگ) تجزيه به كمكتحليلكر نحويو به نام تحليل حوولنجام * ‎SS‏ 3 گروه کامپیوتر اصول طراحی کامیابلرها صفحه: 42

صفحه 43:
WY ساخته شدن درخت تجزیه ‎Gl‏ ‏بالا به پایین. مانند (0)بابا گروه کامپیوتر .43 |

صفحه 44:
2-9-1-1 تجزیه کننده بالا به پایین گروه کامپیوتر اصول طراحي کامپایلرها صفحه: 44

صفحه 45:
مثال از تجزیه بالا به پایین وب 6 داوم له ب 6

صفحه 46:
2-9-1-2 تجزیه بالا به پایین پیش گویانه با نگاه به نماد پیش نگر در مورد استفاده از هر قانون درتصمیم گيري مجموعه تمام پایلنه هايي است که در قوانین مربوط به غیر پایلنه در سمت چپ قرار مي گیرند

صفحه 47:
مثال ‎Pirst‏ ‏ش نگر يا مجموعه نمادهاي پیش نگر ب 3 rst (®):{ s, 7, &} rst (®): {4,7} rst (OC): fe, a}

صفحه 48:
WY 2-0 بازگشتي چپ ظاهر شدن غیر پایانه سمت چپ در سمت راست قانون بعنوان اولين عنصر حذف باز گشتي چپ پیش از تجزیه بآ | نادب 0 ناك | نالا | نآك د ره © @a/ @b/@olx/y ‏جحت‎

صفحه 49:
مثال حذف باز گشتی چپ 65/0 ددهو ليه اده ج و 6 + 6۱۵ G7 Gu /b

صفحه 50:
2-1 فاکتور چپ یکسان بودن عنصر سمت چپ در حداقل دو قانون گرامر فاکتور گيري چپ » ‏فاکتور گيري از‎ C5010 Ear, Crt tT ‏ب‎ 0

صفحه 51:

صفحه 52:
2-2 تحلیل لغوي - دریافت يك رشته كاراكتري از ورودي - استخراج نشانه ها از آن - تحویل نشانه ها به تجزیه کننده - ارتباط دادن پيامهاي خطاي تولید شده کامپایلر با برنامه مبدا

صفحه 53:
مثال تحلیل لغوي عبارت دستوري 5 7 >

صفحه 54:
2-12-1 رابط تحلیلگر لغو: مصرف نشانه ها براي تعیین ساختار ‎Caw)‏ ‏دستورات ید wey ‏تسیل گر نعوی( ور( (سو‎ 3? aes جزيه كنند ع ممسمم ميض لشایه كريوبه مكاننشلنه بعدويردايش-© نشده

صفحه 55:
2-3 تشکیل جدول نماد جدولي ساخته شونده توسط. فازهاي تحلیل, مورد استفاده فازهاي توليد كد ‎[ew ues se]‏ .ذخيره رشته كاراكتري تشكيل دهنده شناسه در جدول از تحیل تحوی | ضانه کردن نوع شناسه. مورد استفاده(رویه. متغیر و.) أفاذ تحليل ‎[pte‏ درج مکان شناسه در حافظه در جدول ‏||[ فاز توليد کد ]- استفاده از اطلاعات جدول براي دسترسي به متغير و ‏توليد كد ‎ ‎

صفحه 56:
2-13-1 جدول نماد - روالها انديس وارده جدید مربوط به رشته ‏ اگر < در جدول است. اندیس آن بر نشانه !را بر مي گرداند. مي گردد اگر نه. صفر بر می گردد عمل چجلسا تعیین وجود شناسه در جدول نماد عمل 2427 در صورت عدم وجود شناسه . درج آن در جدول

صفحه 57:
2-13-2 جدول نماد- پیاده سازي صحاه :صنات ‎ail phew‏ “وم : اشاره گرا کلمات دستوري 1 به | در متن برنامه it u ‏هد كم الك‎ v t| od ‏دنباله كاراكترهاي ورودي‎

صفحه 58:
2-4 ماشین پشته انتز ماشین پشته انتزاعي: شکل مرسوم نمایش مياني تولید کد ‎[satel]‏ حافظه مستورلت» ‏حافظه دادم ها 6 ‎

صفحه 59:
2-14-1 دستورات محاسباتي * قابلیت پیاده سازي مستقیم عملهاي پایه مانند جمع . تفریق و ... در ماشین اقنزييه سازي. عملیات پیچیده تر با دنباله اي از دستورات اولیه ماشین 0 استفاده از نمایش پسوندي در کد ماشین براي ارزيابي يك عبارت محسباتي "" استفاده از يشته در حين ارزيابي عبارات ارزشيابي عبارت در ماشين

صفحه 60:
WY 53 5 ۹ 05 ‏مثال ارزيابي عبارت محاسپاتي با پشته‎ 49 + ‏عبايتمحاسبلتي*©‎ ‏عدد 1 را روي پشته قرار ده‎ -1 ‏عدد 2 را روي پشته قرار ده‎ -2 ‏دوتا از بالاترین عناصر پشته را با هم جمع و آن دو را از پشته بیرون ده‎ -3 ‏نتیجه يعني عدد 4 را روي پشته قرار ده‎ -4 ‏عدد 5 را روي پشته قرار ده‎ -5 ‏دوتا بالاترین عناصر پشته را در هم ضرب و آنها را بیرون ده‎ -6 7- نتيجه يعني عدد 20 را روي پشته قرار ده

صفحه 61:
2-14-2 دستكاري پشته را رووپشته قرار دم محتویات مکان بارا روي پشته قرار ده آدرس با را روي پشته قرار ده "1 مقدار در بالاي پشته را دور بریز ‎che ۷‏ بروي پشته در عاسبا زیر آن گذاشته و هر دو از پشته خارج [:2] ‎Mi‏ يك نسخه از مقدار بالاي پشته را بر روي پشته فشار بده ‎

صفحه 62:
مثال عملیات در پشته هنگام محاسبه ترجمه ‎٩‏ + 9رد ( 9 + ‎dey = (IPOC")) dy € + (IGO*w‏ 6 عم ‎bho day‏ + 60 اسم و عم ‎nde v‏ نه * + © هم ب ride d ‏اصم‎ 0

صفحه 63:
2-14-3 کنترل جریان در ماشین

صفحه 64:
WY 2-14-3-1 کنترل جریان. - دستورات ۱ عدم تاثير در مقصد يرششهابه با 0 لجرلی‌دستور بسعدیاز حکميب | بسرچسبا ‎ae‏ خايج نمودزمقدار بللاييشته. پسرش‌در و خايج نمودزمقدار بللاييشته. برشدر صورتس فر نبودنا سوم ۱ توقناجرا فا

صفحه 65:
فصل سوم تحلیلگر لغوي اهداف رفتاری: دانشجو پس از مطالعه این فصل با مفاهیم زیر آشنا خواهد شد: * آشنايي با تحلیلگر لغوی عبارات و گرامر باقاعده " تحلیلگر لغوی »را " ماشین خودکار قطعی و غیر قطعی و تبدیل آنها به یکد گر

صفحه 66:
3-1 وظایف تحلیل گر لغو 1- خواندن نمادهاي ورودي تولید دنباله لیاز نشانه ها 9 3- ثبت نشانه ها در جدول نمادها 4- حذف توضیحات برنامه. جاي خالي و کاراکتر مربوط به سطر ‎Bde‏ ‏5- ارتباط دادن پيامهاي خطاي تولید شده کامپایلر با برنامه مبدا

صفحه 67:
3-2 ارتباط با تجزیه کننده ار تباط تحلیل گر لغوي با تجزیه کننده

صفحه 68:
3-2-1 دلایل جدايي فازهاي تحلیل لغوي و تجز 7 ساده تسر بودن‌طراحي‌دو ف از -) لفزليشكارلييكامبايلر به دليلإستفاده از -© ميانكير بين دو فاز قابلیتحملک امپایار و محدود شدنتغییرلتبه -9 تحلیلگر لغوي

صفحه 69:
3-3 خطاي مرحله تحلیل لغوي منطبق نبودن هیچ کدام از الگوهاي مربوط به تشخیص نشانه ها در زبان مبدا با پيشوندي از ورودي xno Orde 0- حذفک اراکتر لضافي-9 ديج كارلكتر از قلم‌لفتادد 9 جايگزينيب کارا کتر ب جایک ارلکتر غلط 6 جلبجا نمودزدو كاراكتر مجاور هم - © روشهاي يوشش خطا ‎sents ons‏ )| اصول طراحي کامپایلرها اس ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 70:
3-3-1 پوشش خطا- ۳۵006 ‎Panic‏ * ساده ترین شیوه پوشش خطا * حذف کاراكترهاي متوللي از باقیمانده ورودي تا پیدا شدن نشانه قابل قبول توسط تحلیل گر لغوي * كافي بودن براي يك سیستم محاسباتي محاوره اي

صفحه 71:
3-4 تحلیلگر لفوي - پیاده سازي روشهاي پیاده سازي سیستم و خولندن‌يشته ورودیی ا ار گروه کامپیوتر اصول طراحي کامپایلرها نوشتن تحلیلگر لغوي به اسمبلي و مدیریت خواندن رشته ورودي نوشتن تحلیلگر لغوي به زبانهاي متداول برنامه نويسي تسپیلات/٩‏ صفحه: 71

صفحه 72:
3-5 عبارات با قاعده قواعد تعریف 1- عبارت باقاعده ع زبان (ع) (مجموعه حاوي رشته تهي) را مشخص مي نماید. 2- (40 عبارت باقاعده اي است که زبان « (نمادي از 2) را مي سازد. 3- اگر ه و ط عبارات باقاعده باشند. اجتماع, الحاق و 0 4090 آنها هم باقاعده است.

صفحه 73:
مثال عبارات ‎wel‏ اگر [ط)<ظ باشد آنگاه: 1- از عبارت باقاعده 0 مجموعه ‎fa, b}‏ ساخته مي شود. 2- از عبارت باقاعده ((0») ((41) مجموعه ( بادارتحارطك» ‎Cea,‏ تولید مي شود. 3- عبارت باقاعده ه* كليه رشته هايي با صفر یا چند هرا تولید مي كند. 4- عبارت باقاعده (00) * رشته هايي با صفر یا چند نماد از ط یا ه را تولید مي کند.

صفحه 74:
WY ‏عبارات باقاعده - خواص چبري‎ 3-5-1 توصيف اصل جلبجا پذیر لستا ‎sOb=bOu‏ ‏ش رکه ذیر لستا 0( ۲۵) ۰0 الحاق شرکت پذیر است ‎(ob) p= abo)‏ عه طم (م © ماه دع هط د وه ©ط) الحاق نسبت به / توزيع يذير است =e) ag

صفحه 75:
مثال عبارات پا قاعده در زبان پاسکال تعریف باقاعده مربوط به شناسه ها beter > ۵۱۱۰.۱۱ ۱۳۱۰. 0 7 01..19 104 ‏جه‎ beter (beter / dit) * تعریف باقاعده اعداد بی علامت Ona OVD... \E ‏یب‎ chea ‏بل‎ * ‎Practica > . Onto \ €‏ مسیون ‎Optord_expoard — (B(+\-\ )eigte) Ve‏ ‎ ‎ ‎

صفحه 76:
3-6 مجموعه هاي بي قاعده ساختايهاي‌موازنه ليو لاسنه لي -) يشته هاي كرايي-© يشته هاييبرليمقايسه دو جيز -©

صفحه 77:
3-7 گرامر با قاعده فرم قوانین گرامر باقاعده

صفحه 78:
مثال چند گرامر پا قاعده 6: 6 > bib ‏ب‎

صفحه 79:
1- آماده شدن پرونده اي حاوي مشخصه تحليلكر براي جما 2- تبديل محتواي يرونده به برنامه در زبان 0 3- كامبايل برنامه توليدي همراه كتابخانه برنامه تحليل لغوي خروجي برنامه تحلیلگر -6

صفحه 80:
3-8-1 - 07.]اچزاي برنامه اعلان ها بخش ‎sla‏ برنامه مبدا سا قواعد ترجمه رويه هاي ‎BRS‏ اعلان ها ‎hh‏ ‏ترتیب در متن برنامه مبدا سا قواعد ترجمه %% رويه هاي كمكيج

صفحه 81:
رم د 3-8 توليدكننده تحليلكر لغوي 5 اعلان متغيرها من نوت مر بخش اعلان برنامه ت باقاعد تعاریف باقاعده (اجزاي عبارات باقاعده مورد استفاده در قواعد ترجمه)

صفحه 82:
3-8-1 - 0.]اجزاي پرنامه بخش قوانین ترجمه بلافاصله پس از 9696 PA ‏(عملمعنايي11:‎ 4 66 Hitch) ~~ a © ( عملمعنابي3) : مورد استفاده دراجراي اعمال

صفحه 83:
WY ‏ماشین خودکار متناهي‎ 3-9 ابزاري براي تشخیص ساختارهاي موجود ‎OL)‏ در دنباله ورودي از نشانه ها و پذیرفتن یا نپذیرفتن دنباله كاراكترهاي ورودي دشن خود کار متناهي قطعي 0650 ۱ 2- ماشین خود کار متناهي غیر قطعي 068 گروه کامپیوتر اصول طراحي کامپایلرها ‎PERE‏ انواع ماشین هاي خود کار

صفحه 84:
3-9-1 ماشین خودکار قطعي تابع گذر الفباي زبان ‎se‏ ‏(© ,© , ة, 8 , ©) 2ه \ زيرمجموعه اي از © به نام حالات نهابي متناهي از حالات ماش حالت ابتدابي يا شروع ماشين مجموعه متناهي از حلات ماشين

صفحه 85:
WY 3-9-2 ماشين خودكار غير )اي که مي توان از هر حالت با عناصر ورودي یکسان به حالات مختلفي رسید. كروه كامبيوتر اصول طراحى كامبايلرها صفحه: 85 |

صفحه 86:
مثال از 1214 تبديل به ‎SIAL A‏ ®-—©@——©@ b رشته پردازش شده محاسبه [© , db] [© , webb] 5 fou) ™ ou ۳ ] 21 wbb ۰0 د 6 / هط + ©

صفحه 87:
مال از 1۳۸

صفحه 88:
3-9-3 تبدیل ۱1۳۸ به ۳۸ تعریف : هبستگي لامبدا یا (و) سعحاه -2 به صورت باز گشتي : 1- پایه: (و) سوه 61 2- مرحله بازكشت: اكر 4 يك عنصر از .3 -(9)سمححاه باشد و اگر ( .2 , ) > آنگاه (9) مامإ © ع است. 3- همبستگي :اج در () سععاه. .7 است اگر بتواند با تکرار متناهي از مرحله باز گشت بد. آید.

صفحه 89:
مثال هميستگي لامپدا fq} )0,8(

صفحه 90:
DFA « NFA ‏مثال تبدیل‎

صفحه 91:
3-9-4 ساخت ۱1/۸ از عبارات با قاعده )اس © ‎“ogo?‏ L (OE) OL (0a)

صفحه 92:
مثال اچتماع دو عبارت پا قاعده ‎Sa‏ وم 20*60 + عه © foo”

صفحه 93:
3-9-4 ساخت ۱1/۸ از عبارات با قاعده ©-2-ه-ه-ك الحاق (©0 ) نا , ( 0- ) با يا (©0) با (00)نا

صفحه 94:
مثال الحاق دو عبارت با قاعده ۳ ‎@™-O @-O‏ هن(

صفحه 95:
3-9-4 ساخت ۱1/۸ از عبارات با قاعده Oar ‏له‎ © *L@QL LOA) ‏و‎

صفحه 96:

صفحه 97:
مثال تشکیل ۱7[ از عبارات باقاعده وتو نم

صفحه 98:

صفحه 99:
مثال تشکیل ۱7[ از عبارات باقاعده مرحله 4 رت

صفحه 100:
مثال يك الكو براي تحليل كر لغوي الگوي تشخيص ساختار 1 با کمك ماشين قطعي رقم یا حرف - با تون مین پذیرش نهايي

صفحه 101:
فصل چهارم: تحلیل نحوي اهداف رفتاری: دانشجو پس از مطالعه این فصل با مفاهیم زیر آشنا خواهد شد: " تحلیل گر نحوی و خطاهای نحوی " گرامر و گرامر مستقل از متن " تجزیه بالا به پایین و پایین به بالا ۲ تجزیه پیشگو LOLA 5 LL(A).LR. CLR sla p15"

صفحه 102:
4-1 فواید گرا 1- نمایش دقیق و قابل فهمي براي زبان 2- امکان ایجاد پارسرهاي کار آمد با قابلیت تشخیص ساختارهاي نحوي درست و دقیق 3- ایجاد ساختاري مناسب براي زبان جهت ترجمه صحیح و آشكارسازي خطا توسط گرامر درست طراحي شده 4- سادگي اضافه نمودن ساختارهاي جدید به زبان

صفحه 103:
4-2 تجزیه کننده دریافت رشته اي از نشانه ها از تحلیل گر لغوي و بررسي تعلق رشته به زبان توسط گرامر انجام بررسي طبق ساختارهاي نحوي زبان و هر مرحله گزارش خطاهاي نحوي به اداره کننده خطا رفع خطا براي پردازش ادامه ورودي بر اساس خطاهاي متداول

صفحه 104:
4-2-1 تجزیه کننده- ارتباطات کد مياني ‎ee‏ ۳۳ نشانه ‎en‏ ‏اجلوبندي کامپایل (پارسر) حا لضن جدول نماد موقعیت تجزیه کننده در مدل کامپایلر گروه کامپیوتر اصول طراحي کامپایلرها

صفحه 105:
4-3 خطاي نحو 1- لغوي. مانند دیکته غلط شناسه . کلمه كليدي یا عملگر 2- نحوي. مانند عبارت محاسباتي با پرانتزهاي نامتعادل 3- معنايي. مانند استفاده از عملگر با عملوندهاي ناساز گار 4- منطقي. مانند فراخواني باز گشتي بي نهایت

صفحه 106:
WY - توانايي گزارش حضور خطاها را با وضوح و با دقت - پوشش هر خطا با سرعت كافي به جهت امکان آشكارسازي خطاهاي بعدي - عدم کاهش بیش از حد سرعت پردازش برنامه هاي صحیح

صفحه 107:
> 4-3

صفحه 108:
WY - ۳۵016 10006 ‏خطاي نحوي‎ 4-3 ويژگي ساده تسرین روش ب وشش- قابللستفاده لکثر روشهايت جزیه - .وارد حلقه بي‌نهاينشمي‌شود - روش کار صرف نظر از يك نماد در هر مرحله_تا زمان پیداشدن نشانه هماهنگ با زبان گروه کامپیوتر اصول طراحي کامپایلرها || صفحه: 108 (

صفحه 109:
~ Plrwe bevel ‏خطاي نحوي‎ 4-3 ويژگي - استفاده از تصحیح موضعي - عدم ورود به حلقه بي نهایت با دقت در انتخاب جايگزيني - ضعف در برخورد با خطاهاي اصلي قبل از نقطه تشخیص - قادر به تصحیح هر رشته ورودي روش کار پيشوندي از باقیمانده ورودي را جایگزین رشته اي مي نماید که امکان ادامه تجزیه باشد.

صفحه 110:
- Error production ‏خطاي نحوي‎ 4-3 روش كار

صفحه 111:
- Global Correction ‏خطاي نحوي‎ 4-3 روش کار انتخاب الگوریتم هاي تصحیح خطا با قابلیت ایجاد کمترین تغییرات در ورودي براي رفع خطا رخ دادن حداقل تعداد درج هاء حذفها در رشته ورودي | اصول طراحي کامپایلرها

صفحه 112:
4-4 گرامر مستقل از متن قوانین : اعضاي مجموعه ‎O‏ مجموعه متغیرها یا غیر پایانه ها (0۶ 0)* ويژگي زبان a EL OA(A ‏(اگر و تتها اگر‎ *®>u(PBEO,wE (SOO)

صفحه 113:
4-4-1 گرامر مستقل از متن - تعاریف رشته ‎J)‏ 0) ()) مه يك فرم جمله ایست اگر يك فرم جمله اي | 7 اشتقاق از 09 به مهه وجود داشته باشد ‎WED" ad,‏ يك جمله است اگر يك اشتقاق از 2 به مه وجود داشته باشد ‏زبان 08 كه با ( 2)) ما نشان مي دهند. مجموعه ) > لس ‎ ‎ ‎ ‎ ‏کروه کامپیوتر .| _اصول طراحي کامپایلرها . | صفحه. 113 ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 114:
4 4 گرامر مستقل از من نمونه اشتفاقهاي يك رشته یشته ال ‎cy‏ = ب ۵ 0 ب و ‎CO‏ ب و © ب 0 > وب ‎o‏ © ب ‎woo > Mee > 6*0 > Wee‏ > ‎Oba‏ 7 6090۰ ب 0 ب 0 + ‎b060‏ > 069 بت ‎dO‏ > 0 ب ۰ > م00 جه 0 > 0 + ‎Obs 7 dda‏ > ملد ب مه ب لك مت بت املس ع امي ب

صفحه 115:
مثال گرامرهاي مستقل از متن ۰ ب ۵ ۶ « 8 6۵ > tO 6 « 0 6 + ۷ ۲ ۵ ب © G6 > Wb\ Ob G+ GO 6 ‏ب‎ ۲۵ ۲ صفحه: 115

صفحه 116:
4-5 عبارات باقاعده- دلایل استفاده براي نحو زبان عدم نياز به نمايشنوع قوي‌مانند گرلمر بسرلي‌ت_ وصیفقولنینساده لسفوي- زبان لمکانن‌مایشمختصرتر و قابل‌فهم تروسرلین شانه هان‌سبتسه گرلمر 9 ایجاد تسحلیل‌گرهایا فويک ارلتر بسه صویتخود کار -0 رله مناسبيب رلی‌پیمانه سازي‌جاوبنديک امپایار بسه دو بخشق ابل-6 مدیریتهسا تسقسیم ساختار زبانبه لفويو غيرلغوي

صفحه 117:
4-6 تجزيه- نوع بالا به ‎nk‏ 1- سعي در يافتن سمت جب ترين اشتقاق براي رشته ورودي دارد. 2- سعي در ساختن درخت تجزیه براي رشته ورودي با شروع از ريشه و ایجاد گره هاي درخت بصورت پیش ترتیب ‎Scapa gla $‏ 9 -0 (0) بارا نع پارسرهاي هب ‏كرلمرهاويا عقبكرد .© ‎ ‎ ‎WY ‎ ‎

صفحه 118:
تبجزیه- نوع بللابه پایین‌64 تجزیه کننده باز گشتي - كاهشي ( پیشگو) تهیه مجموعه اي از پایانه هايي که در هر قانون براي يك غیر پایانه در .سمت راست ظاهر مي شوتق | بررسي دنباله رشته ورودي بر طبق مجموعه بالا بررسي بالا با مقایسه نماد پیش نگر در ورودي با عناصر مجموعه بالا

صفحه 119:
WY 4-6-1 تجزیه کننده پیشگو - پیاده سازي لبهي گرلمر در ‎[spicing‏ | 0۰ ‏حلزش روع و حالههایی_رلیگ رلمر‎ din باكمسير از حا لتشروع به نهايوبرليهر قانونبه شكل-9 ‎XO, XO,‏ دانير جسسه لبه هايا يا ها يمسير به صورت © «,..., 200,20 كروه كامبيوتر اصول طراحي كامبايلرها || صفحه. 119 |

صفحه 120:
مثال تجزیه کندده پیشگو- نمودار انتقال e: @)* @* ©) 1 ‏مرحله‎ ‎os ۱۶‏ اه دم ‏1۳ © مرحله 6 جنگ —— ‎ ‎ ‎

صفحه 121:
مثال تجزیه کننده پیشگو- نمودار انتفال 5 5 © a vr: O4-@*@*. eu,

صفحه 122:

صفحه 123:
4-6-2 تجزیه کننده پيشگوي غهر بازگشتي بخشهاي يك تجزیه کننده غیر باز گشت ‎Coon often)‏ حاوي رشته ورودي براي تجزیه با علامت 4 در انتهاي آن رس 8 دنباله اي از نمادهاي گرامر در هر لحظه براي تجزیه با در ته آن آرایه دو بعدي عناصر [ه,©].© يك غير يايانه وه يك ‎BLE‏ ‏دنباله تجزيه شده تا آن زمان

صفحه 124:
4-6-2 نجز 4 کیرد ‎Ex, ٠‏ غير باز ‎+e‏ هو | + | ۲ | ‎٩‏ | ورودي آشاره گر £ ۱۱ اه اجه

صفحه 125:
اگر -0 8 < ه 2 باشد توقف تجزیه کننده اعلام خاتمه موفق تجزیه اكر -© 8 عد ه 2 خروج از پشته , انتقال, اشاره گر ورودي به نماد بعدي در ورودي

صفحه 126:
۶ « 6 ۶ ب و ‎p> Or‏ ‎TA ۶‏ جدول تجزیه ا ۶ ‎td + * ( ) $‏ غير يايانه ‎or‏ بو ‌ وبه| وبه| ۲۵ ۵+ ب ۵ ‎TO‏ ف ‎roer‏ ۳ ۲ ‎Toe Moe‏ اب ‎Toe‏ 41 ‎eT |? > (@)‏ ده ع

صفحه 127:
مثال_تجزیه کننده غیر بازگشتي پیشگو ee rer eK re ‏هم بو‎ جوم ‎eH‏ voter eK" و دم ‎ore‏ Abt tS ad entry Abt * ‏و‎ ‏کی‎ ‏قم * يمه‎ کی که ‎dts‏ ono BREE sor sore sor" or sor sor sore sor" tor sore sore sow WY

صفحه 128:
WY First , Follow ‏مجبوعه‎ 4-7 Ea a اگر رشته که ه هر رشته اي از نمادهاي گرامري باشد. مجموعه پایانه هايي رشته هاي مشتق شده ازآنها با : شروع مي شوند (0) اصؤ.است a براي غير )بلافاصله بعد از آن هستند. مجموعه اي از پایانهاست که در هر شبه جمله پایانه

صفحه 129:
UY Follow (A) aul 4-7-1 1- ؤ در )6( ‎Pokrw‏ قرار داده مي شود که نماد شروع گرامر است و ۶ نماد انتهاي سمت راست رشته ورودیست. 2- اگر قانوني به صورت 000 «- 0 وجود دارد آنگاه هرچيزي در (6) سب بجز ع به مجموعه (0) سا اضافه مي شود. 3- اگر قانونهايي بشکل 66 - ۵ يا 6©© ب © که (6) ۳" حاوي 6 باشد ( ) هر چيزي در مجموعه (0)سطه» به (0) سط اضافه مي شود.

صفحه 130:
First (A) ‏محاسبه‎ 4-7-1 1- اگر »«پایانه باشد. 00 و برابرست با 00 2- اگر ع «- قانون گرامر باشد. 6 به 00 سبح اضافه مي شود. 3- اگر ‏ غیرپایانه و ۷۷۵۰..۷۰ ۲-۱ قانون گرامر. براي هر ا, ه در مجموعه (۷) باشد و ع در تمام مجموعه هاي (۷۰) بمع...(۷۵ ) بسح قرار داشته باشد. و به مجموعه )0( ‎Prot‏ اضافه مي شود.

صفحه 131:
مثال مجموعه هاي ‎First , Follow‏ e778 @> +0 \e Te ely 3 3 = (۷,)) 2 () بمب = ‎Pret (G) = Prot (T)‏ وا نم ‎Orn (6) ={+,£}‏ ماه دم Ora (T)={*, 6} ‏سا - (0) سا‎ )۵( 2 )(,۹( obow (1) = Pobaw (T) ={+,),$} (5(,*,+)- (©) سح

صفحه 132:
4-8 ایجاد جدول تجزیه 1- براي هر قانون از گرامر بصورت » «- ۵ مراحل 2 و 3 تکرار شود. 2- براي هر پایانه » در مجموعه 6 - 0 .(۵) سم به [۰, 010 اضافه شود. 3-اگر در (ه) یوج باشد. + © براي هر يايانهط در (8) سا به [ا , 016 اضافه شود. اگر ع 92 )@( ‎Pokw (@) 49 $ 9 Prat‏ باشد. ه د ۵ به [3, 0] 0 اضافه شود.

صفحه 133:
مثال جدول تجزیه (۲,)) 2 (۲) سب - (۲۵) ۲ :© ب © ۶ ب 6 ۳ ۰ ۲ لدعي 1 | ۵(۱) ددع

صفحه 134:
1- گرامري که ابهام یا بازگشتي چپ ندارد. 2- اگر۵۱ - ۵ دو قانون از 0باشند براي هیچ پایانه اي مانند هم هر دوي ©و رشته هاي شروع شونده با تولید نمي کنند. 3- حداکثر يكي از ۵و مي توانند رشته تهي تولید کنند. 4-اگر ۵. و دج رشته اي شروع شونده با پایانه هاي مجموعه (9) سل تولید نمي كند.

صفحه 135:
مثال گرامر (1) ‎LL‏ ‏:6م ب 6 ۶ ب ۵ گرامر () ماب است زیرا : ‎ae on.‏ باه عم Cra (+TC) = {+}, Prot(e) {fe} )+( - © © 5,((2) (ع , +),((, 248( :6 ) سطاط , زع , +) - ( :© ) ‎ro‏ © -(ع)6(*), (ع) > (ع) س0 , (*)- رطع *) ‎Prat‏ Prat(T)={e,*}, Pow (M)={$,), +}. fe, "}{$,) +} = @ Prat ((C)) {(}, Prot (Md) ={d},{(} {de} =o

صفحه 136:
ور ور ور ار و ‎٩‏ | ه © هر 9 6 كرامر (0) دارا نيست.

صفحه 137:
1- عدم تطابق پایانه موجود در بالاي پشته با نماد ورودي بعدي - 2- خالي بودن وارده جدول براي غیر پایانهه در بالاي پشته و پایانه » بعنوان نماد ورودي بعدي روش پوشش خطا کنار گذاردن نمادهاي ورودي بعدي تا زمان ظاهر شدن شناسه اي متعلق به مجموعه اي از شناسه هاي هماهنگ کننده

صفحه 138:
4-10-1 انتخاب مجموعه هماهنگ کننده گذاردن تمام نمادهاي (0) سطه۳) در مجموعه هماهنگ کننده غیر مجموعه پایانه و بررسي ورودي تا زمان ظاهر شدن يك عضو از آن گذاردن مجموعه نمادهاي شروع کننده ساختارهاي سطح بالاتر زبان به همراه مجموعه هماهنگ کننده ساختارهاي سطوح پایین تر زبان مانند کلمات كليدي به اضافه مجموعه سسحاد© ها (3) كذاردن مجموعه (©) سج به مجموعه هماهنك كننده غير يايانه © قانونهاي توليد كننده غير بايانه تهي براي غير بايانه هاي قادر به اشتقاق تهي

صفحه 139:
‎١ 5‏ 5 5 مثال بروز خطا در تجزیه پیشگو 1- در صورت خالي بودن وارده جدول . نماد ورودي حذف ‏2- در صورت ورودي!ب< ( از مجموعه نشانه هاي هماهنگ کننده سل ) خروج غیر پایانه بالاي پشته براي امکان ادامه تجزیه ‏در صورنعدم تطابقن شانه بالوپ‌فته با نماد ورودي خروج -9 نشلنه از يشت ‎ ‎

صفحه 140:
مثال پروز ‎lbs‏ در تجزیه پیشگو ۵ + و يشته ورودودارليخطايلم * + لع( و ‎n> Or‏ 6 * ب ۲ ‎@)\d‏ ددم مرحله 1 ‎id + * ( ) $‏ غیر پایانه ‎o>‏ بو ® وبه| وب ه| ۲۵ اهب ب ۵ 2۵ ‎oe‏ ‏“حم مام 2 | وب ای ‎vr Toe‏ (ه) ده م عدم| م

صفحه 141:
900 2 1 مثال بروز خطا در نجزيه يبشكو مرحله 2 ‎a 7 * ( ) $‏ شر ‎Bil‏ 6 eo ‏ابو‎ wak| awk 5 ep > +e 19 ‏وبه| وم ه|‎ ‏سپ “مهيام م‎ PCT) ‏سور | سم‎ woe | wot wae ‏ود‎ ‎e leon ake ۰ )6۵( ack | ack

صفحه 142:
مثال پروز خطا در تجزیه پیشگو 4 ‘ 3 ‏مرحله‎ ‎0 ۳ ‏صا جم‎ so ‏معا رج وه‎ Prat (©) sor ‏تیه‎ ‎sore nat ns sor AWS sor ‏که‎ ‎sore ord sore +n @rror ]0, + [ ‏رو‎ اس مسا سا 08+ ‎sor‏

صفحه 143:
W ‏تجزیه بالا به پایین - انتقال کاهش‎ 4-1 سعي در ایجاد درخت تجزیه با شروع از برگها و رفتن به سمت ريشه - کاهش جايگزيني يك زیررشته خاص منطبق با سمت راست يك قانون با نماد ها هون گروه کامپیوتر اصول طراحي کامپایلرها ‏ || صفحه: 143

صفحه 144:
مثال تجزیه بالا به پایین - انتقال کاهش دنباله ورودي‌ط اه

صفحه 145:
4-11-1 تجزیه انتقال کاهش - دستگیره [زیر رشته اي منطبق بر سمت راست يك قانون و ایجاد کننده يك کاهش, به غير يايانه سمت جب آن قانون زير رشته اي كه با عمل كاهش با توانايي هدايت تجزيه كننده به عنصر شروع كرامر

صفحه 146:
اب 0 ب 8اه وب ۵ WY

صفحه 147:
WY ‏مثال دستگیره‎ © + ه ب © () وعويهرم سس كرامر )®(>®)@ مج © (©) ‎eg eae‏ سمت راست ترين ‏إحله 1 7 اشتقاق ‎ ‎ ‏06 + جد * © +6 ب 0 * 0+ لد 0ص + 0ب ‎ ‎ ‎ ‎ ‎

صفحه 148:
WY

صفحه 149:
WY ‏دستگیره- هرس نمودن‎ 4-11-1-1 توانايي تولید معکوس سمت راست ترین اشتقاق 1-اگر 0 جمله گرامر براي تجزیه باشد. آنگاه ۷ < 0 شبه جمله راست »ام از سمت راست ترین اشتقاق نامشخص . 2- یافتن دستگیره ‎Ber‏ در ۲و کاهش آن تا بدست آمدن شبه جمله راست ۷۲۵ 3- توقف عملیات در صورت رسیدن به عنصر شروع گرامر ۵

صفحه 150:
م * ع + قانون كاهشي ‎eon‏ ‎Grn‏ ‏لد ‏۵-0 ‏© + 6 م6 95 ۶ © © 60۵-90 6۵-۰۵ (06) 6-7 (6) ده 6 شبه جمله راست هك * 9 + 0 كه * ۵ +ع 6 * © + © © * 6+6 ‎e+e‏ a _

صفحه 151:
4-11-2 مشکلات هرس نمودن دستگیره 1- تعیین زیر رشته مناسب براي کاهش در يك شبه جمله راست 2- انتخاب قانون مناسب در موارد وجود دو یا بیشتر قانون با زیر رشته یکسان در سمت راست

صفحه 152:
4-2 تجزیه انتقال کاهش با پشته 57 استفاده از يشته به منظور نكهداري نمادهاي كرامر استفاده از ميانكير ورودي جهت نكهداري رشته مورد نظر براي تجزيه النتقللسفر يا جند نماد به بشته توسط تجزيه -0 ‎oan‏ ‏روند تجزیه | ادلمه مرحله 1 تا نمانپیدا شدزيك‌دستگیره در بلي © پسشته كاهش ريستكيره بيدا شده به سستجيقانونكرلمري-© | مناسبآن

صفحه 153:
UY ‏عملیات انتفال کاهش با پشته‎ 4-12-1 ‏انتقال نماد بعدي ورودي به بالاي پشته‎ وجود انتهاي سمت راست دستگیره در بالاي پشته و یافتن سمت چپ آن و تصمیم گيري براي جايگزيني اعلام تکمیل موفقیت آمیز عمل تجزیه تشخیص خطاي نحوي و فراخواني رویه پوشش خطا

صفحه 154:
WY ‏مثال تجزيه انتقال کاهش با پشته‎ @e>e+0 ۰ ‏به( وین‎ © )6( 9 )9( ‏ده (ه)‎ ‏۵ب‎ ‏ب-‎ 6 + 06 ‏رشته هم * عم + 0ل‎ ‏يبه ص * 6+ وب‎ ‏6م + © ب‎ * 6 Hd +O * 0

صفحه 155:
مثال تجزیه انتقال کاهش با پشته عمل | ورودي | يشته هاه | و مر + 5 له © با عصكدة | 5 م * 0+ 0 هو | و ۵ * ۵+ ‎so‏ ‎WO "HO $ | OWA‏ +56 لج © با عصكحة | 5 46 * مه 56 مه | و ,+ 6+ 56 بو | وم ‎$e+e*‏ ‎Redo by ® id‏ |$ * © + 6و ‎$0+0*O $| Redorby® + 8*@‏ مجه دوسي |$ +هو ام | 8 56 إل كوه كمييدتر |إل_اصبون طراسي ‎eet‏ صفح 235 |

صفحه 156:
4- 13 تجزیه انتقال کاهش - پیشوند قابل وقوع مجموعه پيشوندهاي شبه جملات راست ظاهر شونده در پشته يك تجزیه کننده انتقالء کاهش 1c پيشوندي از يك شبه جمله راست عبور نکننده از انتهاي راست سمت راست ترین دستگیره آن شبه جمله

صفحه 157:
4-4 تجزیه انتقال کاهش- تناقض ها تردید در عمل انتقال یا عمل کاهش در زمان تصمیم گيري براي تجزیه کننده زمان

صفحه 158:
4-4 تجزیه کننده عملگر اولوبت گرامر نوع عملگر قوانين -0 ع .نداشته باشد در سستولسقولنینتسولید هیچ کلم -9 .از دو پایلنه کتار هم نباشند

صفحه 159:
مثال عملگر اولوبت - گرامر عملگر وجود دو غیر پایانه در سمت راست قانون 1 كرامر عملكر نيست

صفحه 160:
WY 4-14-1 نقطه ضعفهاي روش عملگر اولویت دشوار بودن اداره نمودن نشانه هايي مانند علامت منها با دو اولویت متفاوت (دوديييا يكلني) عدم اطمينان از نتيجه درست تجزيه به دليل رابطه نزديك بين كرامر زبان در حال تجزيه و تجزیه کننده عملگر اولویت قابلیت تجزیه بر روي تنها رده كوجكي از كرامرها

صفحه 161:
4-14-2 عملگر اولویت - تعیین اولویتها تعریف 3 رابطه اولویت مجزاي بین هر زوج از پایانه ها رابطه a <b مفهوم اولویت و کمتر از ما است. اولویت » و وا یکسان است. اولویت » بيش از ا است.

صفحه 162:
4-14-2 عملگر اولویت روشهاي تعبین اولوپت لستفاده از شر که ذيريو اولویتموجود بین‌خود عملگرها -4 در زبان مانند اولویت هاي زیر لیجاد گرلمر غیر مبهميبرلی‌نبانو دیختق جزیه آنبا -6 قابلیت انعکاس شرکت پذيري و اولویت صحیح بین عناصر پایانه در درخت

صفحه 163:
مثال عملگر اولویت - تعیین اولویتها * |,>|یک>|< | ,> <.| > ) ]>.]>.]> |= )> ( ].<|.< < < 6 + 56: ۵ ب 6 “ص ۰ ۲ ‎Ts \e‏ ها( مدع

صفحه 164:
4-14-3 استفاده از اولویت ها قرار دادنرولبط اولوینتسیرپایلنه ها در يشته وروديسه تسجزیه -4 2- قرار دادن علامت 8 ابتدا و انتهاي رشته ورودي به همراه اولویت آن نسبت به اولین پایانه و آخرین پایانه رشته حذففیر پایلنه ها از جمله ورودي-9 4- پویش از انتهاي چپ رشته تا رسیدن به اولین اولویت >.

صفحه 165:
4-14-3 استفاده از اولویت ها 5- پویش به عقب ( چپ ) از همان نقطه با پشت سرگذاردن هر 2 تا رسیدن به <. تعیین‌دستگیره شامل‌هر چیزی‌در سمچولینرلستة. در مرحله -6 < . <وسمت

صفحه 166:
مثال استفاده از اولویت ها رشته ورودي به تجزیه ‎tid * td‏ مرحله 1: زمان دیدن اولین ». از سمت چپ بین اولین !۲ و + مرحله 2:2 يويش به عقب ردشدن از روي - در صورت وجود برخورد با < اولین

صفحه 167:
مثال استفاده از اولویت ها مرحله 3: دستكيره بين اولين >. و>> يعني اولين 84 سمت چپ و تبدیل آن به ۵ :مرحله 4 تشخیص سایر دستگیره هاي مشابه ( ۲ , ۲ ) و باقيمانده دنباله ورودي به شکل و دب در و :مرحله 5 دستگیره بعدي بین + و * و انتهاي راست آن بین * و 5 يعني 8 * © و تبدیل به © :مرحله6 دستكيره بعدي بين + و 5 يعني ©) + © و تبديل به © و يايان تجزيه انتقال كاهش - عملكر اولويت

صفحه 168:
WY ‏عملگر اولویت - اولويتهاي بديهي‎ 4-14-4 1-اگر عملگر 9) اولویت بیشتر از عملگر 9) داشته باشد. روابط © < . 6 و 6 .> 8 بین آنها برقرار است. 2- اگر 0 و 00 عملگرهاي با اولویت یکسان باشند. اگر هر دو شر کت پذیر از راست هستند: © .> © , © .> © ويركت يذير ازجب ؛ © <. © , © <. ©

صفحه 169:
4-14-4 عملگر اولویت - اولويتهاي بديهي 3- براي تمام عملگرهاي مانند 60 روابط زیر برقرار است. © > )+ © <( ( < © 5< © © > 5 م > © © < م ) > © 4- روابط زير هميشه برقرارند: 4<( ) > ) )=( ‎dd < (‏ 5 < م (.< $ (< ( 5< ( م >8

صفحه 170:
مثال عملگر اولویت- جدول اولویت فرضیات - 10 بللثریناولویتو ش ر کنتپذیر از ( تولن) رلست Lb و / بللاتريناولوستمعديو ش ركتهذير از جب -© و - پایینتسریناولویتو شر کسیر از چپ+ -9

صفحه 171:
مثال عملكر اولويت جدول اولويت ها اج اب اج 2 | | | | اد ۸ 0 1لا 6 انا ]نا نا أن انام ‎٠.‏ 3 ۸ ۱۸۱۸ اک ۸ 3 ۸۸ ۶۱ ‎[a‏ ۱۸ ۸۸۸۸/۸ ۸ ۸ ۸ ا اماه 7" تي يا اليا أن الي داب ‎Ly‏ ]لل ]ف ]نان ]نم ‎sw‏

صفحه 172:
WY ‏عملگر اولویت - توایع اولوبت‎ 4-14-5 دو تابع*8 و> براي كدكذاري جدول اولويت براي پارسر 1-(۲)و > (و)2 هر گاه ط > و (ل سم( ددع _ ] a = bof 2)۰( > ‏2-(ظ)۱‎ ‎| 3-(9) > (0هغ8 هر كاه ط <. و et

صفحه 173:
WY هه ‎a‏ جدول اولویت | | ۴ | 2 | ۱2 ۱0۱4۱4۱4 6 * ۰( > ( تحت 24 ‎P(e) >a (i)‏ حص ود نل ‎ ‎ ‎ ‎ ‎ ‎

صفحه 174:
5 | ٩ ۱ * | + 0 ۱ 4 | 4 ۱ 2 | ۴

صفحه 175:
4-14-5 تجزیه عملگر اولوبت- پوشش خطا عدم وجود رلبطه بین‌عنصر ب لوپ شته و -4) عنصر ورودي عدم تسطلبقمجموعه عناصر پسیمایش‌شده -6 در يشته و آمادم کاهش‌با هیچ کلم از قولنین‌گرلمر در حالت اول: قرار گرفتن اشاره گرهايي به توابع رفع خطا و فراخواني آنها هنكام وقوع خطا

صفحه 176:
LR gla ‏تجزیه کننده‎ 15 -4 دلایل پر طرفداربودن تجزیه کننده هاي ‎۱,٩‏ عمومي‌ت رین وش‌تسجزیه لنتقل لک اهش‌فیر با گشتي 9 تولنايي‌تجزیه رده گرلمرهاية بل جزیه پیش‌گو -9 سریعتر ینتسشخیص‌خطاین_سحویب | پسویش‌چسه رلست؟6

صفحه 177:
4-15-1 تجزیه 1.10- نقاط ضعف کار زیاد در ساختآنب رلي‌گرلمر زبانب شکلدستی؟ 2- نیازمند ابزار مولد تجزیه کننده ‎UR‏ براي ایجاد

صفحه 178:
4-15-2 تجزیه 1.10 انوا ساده ترین ‎ane‏ كمترين توانايي یر ‎OUR Lida LR‏ | قدرتمند ترین جدول تجزیه متفاوت کار کم براي ایجاد و قابلیت تجزیه اکثر گرامرها

صفحه 179:
4-15-3 تجزیه - 1.13 اجزاه wef |b] a] .. | 0

صفحه 180:
4-15-4 تصمیم گيري تجزیه 1.1۳ نشانه ورودي ع — تصمیم گيري الگوریتم در هر لحظه عنصر بالاي پشته()) رشته اي به شکل ‎Os...‏ ‏بالاي پشته قرار دارد. (0جکه جح در

صفحه 181:
4-15-5 تجزیه 1.1۴ - جدول تجزیه تابع انتقالي ضيب ( دريافت يك حالت و نماد و توليد انم جدد رم — حالت جديد) ‎a‏ تابع عملكرد عه wios [pw , ol]

صفحه 182:
» روي پشته قرار داده و انجام عمل کاهش با پایان موفق تجزیه . خطاي نحوي بعد «روي پشته مي رود دستور »ام پشته ‎a‏

صفحه 183:
4-15-6 تجزیه 1.1 - روال تجزیه 1- قرار دادن رشته ورودي س به همراه علامت ۶ در انتهاي آن در میانگیر ورودي 2- گذاردن 0 در پشته به عنوان اولیه حالت 3- خواندن وارده جدول تجزيه براي [0«, 9] 4- اجراي عمل در نظر كرفته شده در جدول [ لصت , اسح رسصل , لاطا

صفحه 184:
4-15-6 تجزیه 1.1 - روال تجزیه ناگر پسپکربندیپ‌شته در یكلحظه بصورت 9 OO Xd 50 XE vO... Xo ow pd HH... oa $ 6- با خواندن ه نماد ورودي جاري و < حالت بالاي پشته مراجعه به جدول و انجام يك مورد : لس , 6۵ 7- تبدیل رشته روي پشته پس ازل61 ۶ بصورت : $ ...۵۷0 روف و ...26 2066 ‎OO Xd‏

صفحه 185:
4-15-6 تجزیه 1.1۴ - روال تجزیه 8- تبدیل رشته روي پشته پس از عصلح, 6 بصورت: 53> ...لجع ف , 6 جووی جوم( ...96 2028 6604 9- اعلام پایان موفق تجزیه با دیدنمسسه در جدول 0- فراخواني رویه پوشش خطا با دیدنسسبه

صفحه 186:
406-۷ ‏تنم‎ Swe ‏هه‎ + ۱۶ ۱۱۱ ۱ ۶۱ 6 ‏»م * م ب 0م‎ oO | 6 oF q| e| © 6 6 - 6 6 )©( 9 ‏مر‎ | oP re | ‏جر | هر 9 لبم و‎ we e | © of e] e| © s ‏مر‎ | a re | wo ‏م | و‎ oP ‏او‎ © a | 2 oe 0 6 6 td 9 | oP ra| 0 | ‏و | ور‎ a ‏هم‎ | ©

صفحه 187:
WY ۳" 5 a psn oad +۵ 6 00 +6 6 @ore dtd $ we ores dtd Sa )6( 09۲ ‏ات‎ = (P)OTE"*?P PAD ae 25 )6( ne ° ‏اقا رم‎ + 0 )00( © 80+88 ms ° )00 0۵0+ 9 ‏وب‎ aod 2 )0©6( © ©0+6 68 ۷ 0 )06( © 9 : ° 06 0 ۱

صفحه 188:
WY LR ‏تفاوت گرامر بان و‎ 4-15-7 توانايي تشخیص وقوع سمت راست يك رشته با دیدن تمام آنچه که از آن سمت راست مشتق شده . با استفاده از نماد پیش نگر توانايي تشخیص وقوع سمت راست تنها با دیدن اولین نماد از آنچه توسط سمت راست آن مشتق شده

صفحه 189:
WY SLR ‏تجزیه‎ 4-6 تعریف يك قلم ‏ يك قلم براي ما قانوني از گرامر با يك نقطه در مکانی در سمت راست آن مثال اقلام مختلف قانون .-® رمالا ب © ‎rn‏ | — e- xT

صفحه 190:
‎SLR 4395 4-16‏ تقسيم بددي اقلام ‏اقلام هسته | شامل قلم اولیه) + ‎G‏ و تمام اقلامي که نقطه آنها در انتهاي چپ نیست. ‎ ‎ ‏اقلام غیر هسته .اقلامی که نقطه در انتهاي چپ است ‎ ‎ ‎ ‎ ‎

صفحه 191:
4-16-1 تجزیه 51.1 -ایجاد قلم و مرحله 1: تعیین يك نقطه شروع براي گرامر ۲۰ بو ‎Ove‏ ‎@ve Coe‏ 6 + 6 + 0۰ وب عبه ۵ بح ‎a‏ ۲ ۵ مرحله2: گذاردن نقطه در اولین مکان سمت ‎Oba‏ > راست قانونها ‎o>.‏ ‎e-.‏ اصول طراحي کامپایلرها

صفحه 192:
4-16-1 تجزیه *51.1-ایجاد قلم مرحله3: گذاردن نقطه در مكانهاي بعدي در سمت راست قانونها 6 ‏ب‎ 0 b 6 ‏و 69۵ ب‎ گروه کامپیوتر © -© د 0ق : .وب ده زه © ب © : 5ط © د 6 ‎@e-.‏ ‎Ob.‏ © ۵ صفحه: 192 اصول طراحي کامپایلرها

صفحه 193:
UY ‏وه اقلام‎ 25 -SLR ‏تجزیه‎ 4-16-2 وه اقلام (8)0)با یا گروه (3))0را متعارف فراهم کننده مبناي ساخت تجزیه کننده هاي )6 ساخت به وسیله دو تابع‌ععحه و عم به همراه گرامر افزوده

صفحه 194:
1- اضافه شدن هر قلم موجود در مجموعه اقلام٩‏ به مجموعه یار تابع مسححات 2- اضافه شدن قلم 6. - ۵ درصورت وجود80, 0 - 6 درحعصا و وجود قانون 0 - ۵ در گرامر گروه کامپیوتر اصول طراحي کامپایلرها

صفحه 195:
مثال 4395 ‎-SLR‏ 29,5 اقلام يك گروه قلم داده شده "6] )2 4 ‎ee‏ ‏([0. ب + 6 +6 ‎POTD‏ ‎Coe‏ 8ا(ه) دم + +6 .بو ‎Obnse (1) = 24۰ ۵‏ ‎Te‏ ‏(©). دم لب

صفحه 196:
WY ‏اقلام معتبر‎ -SLR 4355 4-16-2 يك قلم به صورت 600.06 «- 60 براي پیشوند قابل وقوع 00090 معتبر است اگر: * * اشتقاقي به صورت (0) 000 0 > ‎OOO‏ > © )992 داشته باشد. سا ( گروه کامپیوتر اصول طراحی کامپایلرها || صفحه: 196

صفحه 197:
eve + ب 6 ۲ ۳ ‏هس‎ qd ‏يك بيشوند قابل وقوع واه دم‎ كه يس از خواندن آن رفتن به حالت 6

صفحه 198:
4-16-2 تجزیه ‎-SLR‏ 25 وه اقلام ی مجموعه جعحته بر روي مجموعه [0 لا © ب 8] با شرط وجود [)0 6 . © ] + © در 4. تابع يا ( 26 ,)سب مجموعه اي از اقلام معتبر براي پیشوند قابل وقوع ۷ © با ۱ وجود مجموعه اقلام معتبر براي *) در ‎.٩‏ ‏تماد مجموعه كرامر اقلام

صفحه 199:
مثال 4395 ‎-SLR‏ 29,5 اقلام كروه قلم ‎Oe 12) ]6 > G], [G+ ©. + 1] Joss oslo‏ + ب 6 ‎PITT‏ ‏© »م +۵ © خم دم مب (+,1) ذي (©). دع Cr ad

صفحه 200:
29,5 teul-SLR ‏تجزیه‎ 4-16-2 مت ۲ 1- گذاردن ([ ۵. - 0]) ماه در مجموعه گروه 0 2- براي هر مجموعه اقلام 4 در 0 و هر نماد مانند/ انجام بده: 2- 1- اگر (1,2) صب تهي نیست و در نیست انجام بده: 2-1-1- ((,1) سب را به 0 اضافه کن. عقبگرد. تا زماني که هیچ مجموعه باي اضافه شدن نمانده گروه کامپیوتر . | _اصول طراحي کامپایلرها | صفحه: 200

صفحه 201:
مثال تجزیه 51.1 ایجادگروه اقلام ; ده TIE eon 2 عازه دم ‎Toe.‏ (©) دم جه به ert 9 ی ۱ قل ب (©). دم Cr ad ere C7 G+T e7.7 TI OE ‏جم‎ ‏دمع‎ .)©( ‏تشن‎ ee. + + a

صفحه 202:
مثال تجزیه 51.1- ایجادگروه اقلام 6-6 ‎ee‏ 7 +۵ ب 6 کت © معوريج 168 عد ب ۲ + ده 3 عازه دم ‎Te‏ ‏(©). دم + 9 لمم ۱ .(© دهم :100 ‎TIT Ee‏ ‎WO: TI 7+.‏ ۱ يده 0

صفحه 203:
مثال تجزیه 51.18 ایجادگروه اقلام 7160: 6 ‏ب‎ >. We bate. .ماه © وه با 16 وب 1۳ : Wb © OTR a GAG, : . سرام 15 دیاب 6 1 © Rou. :

صفحه 204:
4-16-2 تجزیه 51.1- ایجاد جدول تجزیه 1- ایجاد گروه مجموعه هاي اقلام براي گرامر افزوده ۵ ( با يك نقطه شروع مانند 16) بصورت [ 0..., 10 , 10) < 0 | 2- ساختن حالت ؛از ‏ ( مانند 616 تعیین مس هاي تجزیه براي حالت! بصورت زیر: الف- زج < [, ن] مسععت در صورت وجود ۰0 ۵ - 10 در 1 ‎ww (It, a iy‏ ب- قرار گرفتن< 6‏ ۵ حصلح - [۰, ] مس براي تمام ‎Pobow (® HG") ju gla GLE‏ صورت وجود ‎Ql‏ - 0] در 4 پ- قرار گرفتن بسست [3 , ] ‎wis‏ ‏صورت وجود )© «- "60] در 4 گروه کامپیوتر ‏ _اصول طراحي کامپایلرها ‏ || صفحه: 204

صفحه 205:
WY ‏تجزیه 5.13 ایجاد جدول تجزیه‎ 4-16-2 3 - ایجاد تغییر حالتهاي عم براي حالت! و براي تمام غیر پایانه هاي 0 با استفاده از قانون : اگر-0 ,1( ‎we (1,8) =f ASI4 ) we‏ 4- گذاردن سب براي تمام ورودي هاي تعریف نشده با قوانین 2 و 3 الگوریتم 5 - ایجاد حالت اولیه تجزیه کننده با استفاده از مجموعه اقلام حاوي [0. - "16 ۱! 5

صفحه 206:
وب ‎e+e‏ ‏مرحله 1 + بو ‎een‏ ‎wer‏ ده ‎PITT | ag‏ نع دم TIP © هام > [) , ©] مص مس ور سم 2 ۰ , 0 ] سوت مت دا مدع مرحله 2 امم 2 ‎٩[‏ ,0 ] موه مت د90 نل © قاد د [+, 0] مد مم ب رو ب م

صفحه 207:
مثال تجزیه *51.1- ایجاد جدول تجزیه مرحله 3 [ سح[ + , 6] مت <[ 5 , 6] مهس 7 هه -[(,و]| ‎O27‏ ۳ قاد [* ]مد من ويم انق ' .ادامه مراحل مطابق تمونه ها WY

صفحه 208:
4-7 تجزیه *1.1/)- تعریف قلم ‎ES‏ شکل عمومي يك قلم که 00 - 6 يك قانون در كرامر و هيك بايانه يا علامت انتهاي سمت راست رشته ورودي (۶). اعلام کاهش با 0 در زمان مشاهده ه به عنوان نماد ورودي بعدي

صفحه 209:
4-7 تجریه 1.1۴:)-پیشوند قابل وقوع شرایط قلم معتبر ,۵.6 + 9] براي يك بيشوند قابل وقوع بر * * 4S GO > BOO > BAKO ‏وجود اشتقاق‎ -1 0 < بو یا ه اولین نماد 0 يا 40 برابر تهي و ت برابر

صفحه 210:
‎obey! -CLR 4,355 4-17‏ مجموعه ‎ ‎ ‎ ‎ ‎ ‎ ‏1- براي هر قلم مثل [ه , 0.00 +- 0 در مجموعه 1 انجام بده : ‏براي قانونهاي مانندمر «- ©) در گرامر و هر ‎hl‏ مانندط در(0) ‎Prot‏ ‏اگر قلم [ط , من - 0] در 1 نیست آنرا اضافه کن

صفحه 211:
4-7 تجزیه 1.1۴)- ایجاد مجموعه اقلام امحاسبه 010 ل را مساوي مجموعه قلمهاي [ , 096,06 «- (0] که در 1 موجودند. در نظر بگیر (ل ) سمحاه را بركردان. كروه كامبيوتر اصول طراحي كاميايلرها || صفحه؛ 211

صفحه 212:
4-7 تجزیه 1.1۴)- ایجاد مجموعه اقلام (((5, 6. + 6)) معحطه) <0 قرار ددو تکرار کن براي هر مجموعه از اقلام ‎٩‏ در 0 و هر نماد گرامر مانند۰26 | اكر ‎ai we (1, X)‏ نبوده و در 0 نیست انجام بده: ‎ )1,(‏ را بسه 0 لضافه کن ‎ ‏باقیمانده ‎

صفحه 213:
مثال تجزیه *1.1/)- ایجاد مجموعه اقلام ادن 16 18 600.8 0,8 بو 685 به 8 بو ام مده 0۵ 0 وا نو 0,8 بو اع مم بم رل ده

صفحه 214:
WY 3 + مثال 4335 ‎-CLR‏ ایجاد مجموعه اقلام ,0320 0-85 16 0-5 18 0-18 ,وب 16 خاتمه كار بدليل نتيجه ندادن ساير اقلام. 03 19

صفحه 215:
مثال تجزیه *1.1/)- ایجاد مجموعه اقلام ‎sly we LS‏ مثال ‎ ‎ ‎6 ‎ ‎

صفحه 216:
4-7 تجزیه 1.1۸ ساخت جدول تجزیه > 1- ساخت گروه مجموعه هاي اقلام به صورت (10 ,... , 10 , 0 ) < 0 براي ۱8 2- ایجاد حالت !از تجزیه کننده با استفاده از" و مقداردهي بخش ت» بصورت. زیر: الف- ز 2 < [ ه , ‎٩‏ ] مس در صورت وجود [ ط , 0.0 + 0] در و > )3 ‎wo(t,‏ ب- [5 , 4] «طاعه ۰ 6 لو -درصورت وجود [ه , 0۰ ب- 6] در ٩و‏ 6 < 16

صفحه 217:
‎-CLR «395 4-17‏ ساخت جدول تجزیه 5 ‎ ‏پ- اسسه 8[2 , ۱] مطتت در صورت وجود [© - "۵ , 4] درل ‎Slope (1, 0) 1-3‏ 21 ( ۵,) صب ‎ ‏4- قرار گرفتن سح براي تمام ورودي هاي تعریف نشده با قوانین 2 و3 الگوریتم ‏قرار دادن حالت اولیه تجزیه کننده مساوي حالت بدست آمده از مجموعه حاوي [5. ب "5 , 4] ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 218:
1 مس 3 5 5 وب۵ه ۳3 2 0 0 +۵ 9 - 0 ۷ب 6 ی همه | ه ‎a oh‏ 9 6 © ام 0 3 ‎eo) we‏ 5 6 2 ك 6ه ‎e|‏ ‏هم 6

صفحه 219:
WY > ‏تجزیه *1/1.1- ساخت جدول تجزیه‎ 4-8 ۷ 1- ایجاد گروه مجموعه هاي اقلام بصورت (10 ۰.۰ , 10 , ‎O= {1D‏ 2- بيدا کردن تمام مجموعه هايي با قلم هسته یکسان در بین قلمهاي موجود 3- ایجاد مجموعه نتایج اقلام موجود بصورت (ل... , 0 , ‎OF {UD‏ و محاسبه مه الف- ز 8۷ > [ ه , ‎٩‏ ] بصعت در صورت وجود [ ۲ , ‎MK‏ - 6] در ‎wo(h, a) = 19%‏

صفحه 220:
UY ‏تجزیه 1/].1۴- ساخت جدول تجزیه‎ 4-8 ۷ ۷ ب-[۰ ,1 ] ‎rede B Ga wi‏ -درصورت وجود [ه , .© + 8[ در 4 و 6 < 106 پ- اه 8[2 , ۱] مه در صورت وجود [۵ + "۵ , 4] درب 4- ساخت جداول ص بصورت زیر: الف اگرل اجتماع يك یا چند مجموعه اقلام ( ...710 10) باشد. آنگاه قلمهاي هسته ۳20 ص...,(19) صب ,102 ) سي: .مشابه هستند

صفحه 221:
4-8 تجزیه 1/].1۴- ساخت جدول تجزیه لب اگر 6 اجتماع تمام مجموعه اقلام ( ...10 100 ) باشد که دراي قلمهاي هسته مانند (6 ,10)طا هستند. 6(2۲) صسو

صفحه 222:
مثال تجزیه 1:81.18- ساخت جدول تجزیه ادغام مجموعه هاي اقلام و جایگزین شدن با 6300© اجتماعشان ‎ced ee‏ 0 0 8ب 08 دم 8 0 | كدده كاسيوتر .إلى اصوك طراحى کامپاره .لصف 222 ]|

صفحه 223:
مثال تجزیه | LALR 5 ‏و‎ ‎02 ‎we ‎rd ‎re ssl wes 9 ° 6 6 5 6 جدول 8 8 وم 6 ‎fe‏ تجزیه 0 9 0 9 ‎ee‏ ‎er?‏ ‎Ss‏ ‏حت

صفحه 224:
مثال پوشش خطا در تجزیه ‎LALR LR‏ برخورد با خطا در تجزیه 6۴ ورودي داراي خطاي لو ‎wo wis‏ تسس (پس) قاعم و | آشكارسازي خطا تشخيص خطا در يك مرحله

صفحه 225:
مثال پوشش خطا در تجزیه ‎LALR LR‏ برخورد با خطا در تجزيه #)را(ارا كه ‎wo wird >‏ ‎Seige Sb en‏ 1$,471= 0 ار |_حمه | لوحت

صفحه 226:
1- نشان دادن مجموعه اي از اقلام 1 با هسته آن 2- بدست آوردن بخش تابع اص تنها بوسیله هسته 3- نحوه محاسبه تغییر حالتهاي طص با استفاده از هسته

صفحه 227:
5 ‏بيش ذكرها‎ yess -LALR 4598 4-18 1- براي هر قلم مانند 0. + 0 در مجموعه هسته یا 4 انجام بده: -6((# , سرد ۵])) وه <: ل 3-اگر ,020 +-۵] درل نبوده و ۰ -* 4- تولید نماد پیش نگره براي قلم 020 + 6 در (1,(۵) صب

صفحه 228:
WY ‏بيش نكرها‎ gas -LALR 4 555 4-18 ‎O.XO] SE 5‏ > ۵, #] در مجموعه ل" نیست. پیش نگرها آزیدیر ۵ در مجموعه 1 به 02,0 +- 6 در (,1) عب انتشار مي يابند. ‎ ‎ ‎ ‎ ‎

صفحه 229:
‎-LALR 4-18‏ محاسپه هسته هاي گروه اقلام ۱ ‏1- ساختن هسته اقلام۱ بخش تجزیه 0 ‎ ‎ ‏2-اجراي الگوریتم تعیین پیش نگر بر روي هسته هر مجموعه از اقلام۴ و نماد گرامر ‏3- تشکیل و مقداردهي جدول معین کننده پیش نگرها که براي هر قلم هسته در هر مجموعه اقلام ‎ ‎ ‏4- تکرار چند گذر بر روي هر مجموعه اقلام ‎ ‎ ‎ ‏گروه کامپیوت ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 230:
‎-LALR 4-18‏ محاسپه هسته هاي گروه اقلام ‏5- مراجعه به آن دسته اقلام هسته که | پیش نگرهاي خود را منتشر مي سازد. هنگام مشاهده هر قلم. ‏6- استفاده از اطلاعات ثبت شده توسط مرحله 2 و اضافه نمودن مجموعه جاري پیش نگرها براي !به پیش نگرهايي مرحله قبل ‎ ‏تکرار مرحله 6-4 -2* ‎ ‎ ‎ ‏گروه کامپیوتر اصول طراحي کامپایلرها ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 231:
مثال *1].1.1- محاسبه هسته هاي گروه اقلا مرحله 1 : بدست آوردن اقلام ‎UR‏ ‎F678.‏ ‏۰ ب با ‎ve‏ ‏هدیا 1 .ناه © 3 8 وب 1۳ ‎bow‏ .6 10 ‎OLR.‏ 19 : ۱ دیا 1 ‎Rou. 19 6‏ ©

صفحه 232:
WY ‏مثال *8].1/]- محاسبه هسته هاي گروه اقلام‎ مرحله 2 : اجراي الگوریتم محاسبه پیش نگرها #, ۵. بو ‎LR ,#‏ © #,ه بو ‎Obewe (10° > .© , #1) |——* |b 8 ,#۱<‏ ‎Load, #\=‏ #ر را ده گروه کامپیوتر اصول طراحی کامپایلرها | صفحه: 232 |

صفحه 233:
WY ‏مثال ؟1. ۸.]- محاسبه هسته هاي گروه اقلام‎ ‏مرحله 3 : انتشار پیش نگرها در بين اقلام هسته‎ به از 6 :10 ۵ب 6۵ 16

صفحه 234:
مثال ؟1. ۸.]- محاسبه هسته هاي گروه اقلام به از bLo*R bond. 3.3 1 LotR ۰ ب را .ناه © 3. bLo*R 16 با عاج ه 16 ‎bord‏ 19 : 16 6 Rob. .دراج 8

صفحه 235:
‎LALR‏ محاسبه هسته هاي گروه اقلام ‏مرحله 4 : مقداردهي جدول پیش نگرها و انجام گذرها ‎ ‎AO 55660 60 POETS‏ قلم _ مجموعه ‎O98 5 $ 5‏ :10 .© + 6 :0 را ۵ 70۲ .ماه © 16 .6-6 :16 هب با 1 8 ‎© ‏مه مه مه ‎GRR ‎» born ‏معاد ه . = كديا بجو 29 25 = .ماه © :ه16 ‎Be 4h woe wo o bb oo ‎ ‎40; OSLER. $ ‎ ‎

صفحه 236:
WY ‏فشرده سازي جدول‎ -LALR 4-8 مشابه بودن سطرهاي زيادي از جدول 79 wt Ute ‏فشرده سازي‎ فشرده سازي فیلدهات» و ایجاد يك لیست حالت براي آن گروه کامپیوتر اصول طراحی کامپایلرها || صفحه: 236

صفحه 237:
فشرده سازي جدوا 0 © + © + wit <p eet ۵ | + | * | ) ) 8 | © || © 5 ۵ o| ‏م‎ ۳ a] e] © 6 0 ‏6ه‎ - 6 6 )©( 9 ‏مر‎ | oP re | 6 © + 9 ‏جر | هر‎ we e | © of e] e| © s ‏مر‎ | a re | wo ‏م | و‎ oP ‏او‎ © 1 ‏مام مرحله‎ * oo 6 6 td 9 | oP ra| 0 | ‏و | ور‎ a ‏هم‎ | 0

صفحه 238:
/ 2-5 - فشرده ساز جدول مرحله 2 ‎foe‏ نماد مساوي بودن بخش مس براي | تبديل به حالت هاي 0,4,6,7 مر به ‎oe |)‏ ‎ae ener‏ ليست مشابهي براي حالت 1 ۰ | تبدیل به ‎he‏ اثماق sO 0 $ wy

صفحه 239:
مرحله 3 ‎ae‏ نماد تبدیل به ‎ws‏ ‏جايگزيني وارده هاي خطا در حالت2 ي يٍِ ‎wy |e‏ 5 نما جايكزيني وارده هاي خطاي حالت 3 | تبديل به ال ‎re‏ يننا مساوي بودن بخش له براي حالت هاي 5,10,11 و ادغام آنها

صفحه 240:
WY ‏مثال *11.1- فشرده سازي جدول‎ مرحله 4 عمل تماد جايكزيني وارده هاي حالت 8 | تبديل به + | - ‎od (‏ ‎error‏ = تبديل به جايكزيني وارده هاي حالت 9 ‎(fee‏ تماد ‎wv |‏ ‎[rd‏ يننا ‎ ‎ ‎ ‎ ‎ ‎

صفحه 241:
WY LR ‏وقوع خطا در تجزیه‎ 4-9 تشخیص خطا تنها با مراجعه به جدول تاه اعلام خطا به محض نیافتن ادامه مناسب براي ورودي در حال پویش عدم کاهش دنباله روي پشته عدم ورود نماد ایجاد کننده خطا به پشته

صفحه 242:
4-0 پویش خطا در تجزیه 1,15 1- پویش پشته به يايين تا يافتن حالت « با صب با پایانه خاص 8 2- صرف نظر از يك يا جند نماد ورودي تا یافتن نماد دقیقا مناسب براي 0 3- انتقال حالت ‎ww [> , B]‏ :4 پشته و ادامه تجزیه

صفحه 243:
4-0 پویش خطا در تجزیه 1,15 1- آزمایش هر وارده خطا در جدول تجزیه تسصمیم گيري‌در مرورد منشاء بسروز خطا -9 لیجاد رویه پسوششي‌مناسیس رلي‌خطا -9

صفحه 244:
سط ج727 رو 1- آماده شدن پرونده اي حاوي مشخصه مترجم براي ‎٠/77‏ 2- تبديل محتواي يرونده به برنامه در زبان 0 3- كاميايل برنامه توليدي همراه كتابخانه برنامه تجزيه ما خروجی برنامه تجزیه کننده 6 8 vibe (تجزیه کننده)

صفحه 245:
UY ‏زاي پرنامه‎ Wacc - 4-21-1 اعلان ها بخش هاي برنامه مبدا جه۱۳ قوانین ترجمه روالهاي حاميه اعلان ها 9۷09 قوانین ترجمه 9090 روالهاي حاميج ترتيب در متن برنامه مبدا و7

صفحه 246:
ovelYacc - 4-21-1 اعلان هاي معمول در و محصور بين 196 , 796 اعلان لغات موقت بخش اعلان برنامه اعلان نشانه هاي كرامر

صفحه 247:
4-21-2 - 2060 لقوانین ترجمه بخش قوانین ترجمه بلافاصله پس از 9696 وس سسنچپ. . حلنتخابة > (عملمعنایی1) > لنتخابة > (عمل‌سعنايي2 )> : لمنتخابة > (عملمعنايي3 )> :

اصول طراحي کامپايلر تهيه کننده :سيده فاطمه نوراني گروه :کامپيوتر شناسنامه منبع عنوان منبع :کامپايلرها مترجم :دلداري انتشارات :باغاني (خراسان) منبع اصلي: :Compilers ‏Principles, Techniques, and Tools گروه کامپيوتر اصول طراحي کامپايلرها صفحه2 : جايگاه درس در رشته کامپيوتر ‏ ‏ ‏ ‏ ‏ ضرورت اين درس: ضرورت نياز به زبانهای سطح باال ضرورت ترجمه برنامه های نوشته شده با زبان سطح باال به برنامه به زبان ماشين تنوع زبانهای برنامه نويسی سطح باال دروس پيش نياز :نظريه زبانها و ماشين ،طراحی و پياده سازی زبانها نوع درس :اجباري تعدادکل س=اعات تدريس30: تعداد جلسات تدريس10: گروه کامپيوتر اصول طراحي کامپايلرها صفحه3 : فصل اول :مقدمه اي بر کامپايلر اهداف رفتاري: دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: برنامه هاي تحليل کننده آشنايي با بخش تحليل و بخش سنتز کامپايلر ابزارهای ساخت کامپايلر گروه کامپيوتر اصول طراحي کامپايلرها صفحه4 : 1-1نمونه اي از برنامه هاي تحليل کننده ويرايشگرهاي ساختار چاپگرهاي pretty printer بررسي کننده هاي ايستا مفسرها شکل دهنده هاي متن کامپايلرهاي سيليسيومي مفسرهاي پرس و جو گروه کامپيوتر اصول طراحي کامپايلرها صفحه5 : 1-2تعريف كامپايلر - 1ترجمه برنامه از زبان مبدا به برنامه معادل دز زبان مياني مانند اسمبلي -2گزارش وجود خطاها را در برنامه مبدا به كاربر. برنامه مقصد کامپايلر »ت==حليل +س==نتز« برنامه مبدأ پيغام خطا گروه کامپيوتر اصول طراحي کامپايلرها صفحه6 : 1-3طبقه بندي كامپايلرها دسته بندي كامپايلرها بر اساس چگونگي ساخت و عمليات: تك گذره چند گذره اشكال زدا و Load-and-go بهينه ساز گروه کامپيوتر اصول طراحي کامپايلرها صفحه7 : 1-4عمليات كامپايلر بخش تحليل تجزيه برنامه مبدا به اجزاي تشكيل دهنده اش بخش سنتز تبديل كد مياني به برنامه مقصد در زبان ديگر توليد كد مياني از برنامه مبدا نياز به بيشترين روشهاي خاص گروه کامپيوتر اصول طراحي کامپايلرها صفحه8 : 1-5سيستم پردازش زبان اجزاي سيستم پيش پردازشگر كامپايلر اسمبلر باركننده و ويرايشگر الحاق گروه کامپيوتر اصول طراحي کامپايلرها صفحه9 : 1-5-1پيش پردازشگر جمع آوري ماژولهاي برنامه مبدا موجود در فايلهاي جداگانه تبديل بخشهاي خالصه شده بنام درشت دستورات به احكام زبان مبدا گروه کامپيوتر اصول طراحي کامپايلرها صفحه10 : 1-5-2ارتباطات در سيستم پردازش زبان پردازشگر پيشپردازشگر پيش برنامه مبدا اسكلت برنامه مبدا كامپايلر كامپايلر برنامه اسمبلي مقصد اسمبلر اسمبلر كتابخانه فايل هاي مقصد جابجاپذير كد ماشين جابجاپذير الحاق ويرايشگرالحاق باركننده//ويرايشگر باركننده كد ماشين گروه کامپيوتر اصول طراحي کامپايلرها صفحه11 : 1-6سه فاز تحليل در عمل کامپايل تشخيص نشانه ها گروه بندي نشانه هاي برنامه مبدا به جمالت گرامري بررسي خطاهاي معنايي برنامه گروه کامپيوتر تحليل خطي(تحليل لغوي يا پ=ويش) تحليل سلسله مراتبي(تحليل نحوي يا تجزيه) تحليل معنايي اصول طراحي کامپايلرها صفحه12 : م=را=ح=لكام=پايل1-7 متوالي وابسته به زبان مبدا) جلوبندي( گروه فازهاي مت=والي عقب بندي( گروه فازهاي متولي وابسته به زبان مقصد) گروه کامپيوتر -1تحليل لغوي -2تحليل نحوي -3تحليل معنايي -4توليد كد مياني -5بهينه سازي كد -6توليد كد نهايي اصول طراحي کامپايلرها صفحه13 : ن==مودار م=را=ح=لكام=پايل1-7-1 لغوي گرلغوي تحليلگر تحليل نحوي گرنحوي تحليلگر تحليل معنايي گرمعنايي تحليلگر تحليل نماد جدولنماد مديرجدول مدير مياني كدمياني كنندهكد توليدكننده توليد خطا كنندهخطا ادارهكننده اداره كد سازكد بهينهساز بهينه نهايي كدنهايي توليدكنندهكد توليدكننده گروه کامپيوتر اصول طراحي کامپايلرها صفحه14 : 1-7-2مراحل کامپايلر -تحليل گر لغوي مرور متن برنامه به صورت حرف به حرف تبديل آنها به نشانه ها ( كلمات كليدي ،عملگر ،جداكننده، ثوابت و شناسه) گروه کامپيوتر اصول طراحي کامپايلرها صفحه15 : 1-7-2مراحل كامپايل -تحليل گر نحوي بررسي خروجي تحليل لغوي ساخت درخت تجزيه از نشانه ها گروه کامپيوتر اصول طراحي کامپايلرها صفحه16 : 1-7-2مراحل كامپايل -تحليل گر معنايي بررسي برنامه مبدا براي يافتن خطاهاي معنايي جمع آوري اطالعات مربوط به نوع داده ها گروه کامپيوتر اصول طراحي کامپايلرها صفحه17 : 1-7-2مراحل كامپايل -توليد كد مياني خواندن برنامه ورودي تبديل به برنامه اي در زبان مياني مانند اسمبلي گروه کامپيوتر اصول طراحي کامپايلرها صفحه18 : 1-7-2مراحل كامپايل -بهينه ساز كد بهينه كردن كد مياني ( حذف متغيرهاي مياني غير ضروري) سرعت بخشيدن به توليد كد نهايي گروه کامپيوتر اصول طراحي کامپايلرها صفحه19 : 1-7-2مراحل كامپايل -توليد كننده كد نهايي تبديل كد مياني بهينه به كد جابجاپذير يا اسمبلي تعيين مكانهاي حافظه براي متغيرهاي برنامه انتساب متغيرها به ثبات هاي ماشين گروه کامپيوتر اصول طراحي کامپايلرها صفحه20 : 1-7-2مراحل كامپايل -مديريت جدول نماد تعري=ف ساختمان داده اي شامل ركورد براي شناسه و ميدانهايي براي صفات أن هدف بمنظور شناسهبمنظور ركوردشناسه سريعركورد شناساييسريع كردنشناسايي فراهمكردن فراهم هايش دادههايش بازيابيداده ذخيرهووبازيابي ذخيره گروه کامپيوتر اصول طراحي کامپايلرها صفحه21 : Area:= Pos + Rate * 50 Area:= Pos + Rate * 50 عبارت:مثال از مراحل كامپايل تحليل گر لغوي id1:= id2+ id3 * 50 tem1:=into tem1:=intoreal real50 50 tem2:=id3 * tem1 tem2:=id3 * tem1 tem3:= tem3:=id2 id2++tem2 tem2 Id1:= tem3 Id1:= tem3 tem1:= tem1:=id3 id3**50.0 50.0 Id1:= id2 + tem1 Id1:= id2 + tem1 id1 دن دك + تحليل معنايي * id3 ولي ت Into real 50 Mov Mov id,id,R2 R2 Mov id2 , R1 Mul 50.0 , R2 Mul 50.0 , R2Add R2, R1 Mov Mov R1, R1,id1 id1 22 :صفحه اصول طراحي کامپايلرها ليل تح =: id2 يي ها گر ن =: توليد كد مياني بهينه ساز وي ح گروه کامپيوتر id1 id2 + * id3 50 1-8ابزارهاي ساخت كامپايلر مولدهاي تجزيه كننده توليد كننده هاي پويشگر موتورهاي ترجمه نحوگرا مولدهاي كد خودكار موتورهاي جريان داده گروه کامپيوتر اصول طراحي کامپايلرها صفحه23 : فصل دوم :نحو زبان و تجزيه اهداف رفتاري: دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: گرامر ‏اشتقاق و تجزيه ‏تعريف نحوگرا درخت نحوی تجزيه باال به پايين و پايين به باال ‏ترجمه گروه کامپيوتر اصول طراحي کامپايلرها صفحه24 : 2-1گرامر تعريف متشكلازازنمادها هاييمتشكل رشتههايي ساخترشته روشساخت گرامر:روش گرامر: نمادها کاربرد درزبان رشتهدر يكرشته عضويتيك تشخيصعضويت وسيلهتشخيص وسيله زبان يكزبان ساختاريك كنندهساختار مشخصكننده مشخص زبان گروه کامپيوتر اصول طراحي کامپايلرها صفحه25 : 2-2تعريف رياضي گرامر گرامر 4گانه {G = }N, T, S, P =Nمجموعه غير پايانه ها = Tمجموعه پايانه ها = Sع=ضو ش==رو=ع = Pم=جموعه ق=وا=ن=ينت==ول=يد ر=ش=ته هايز=بان گروه کامپيوتر اصول طراحي کامپايلرها صفحه26 : مثال از يك گرامر } N = { E, F } T = { +, * , / ,id ‏S=E } P = { E  F * id , F  F / E , F  F + F رشته توليدي نمونه گروه کامپيوتر ‏id * id+ id اصول طراحي کامپايلرها صفحه27 : 2-3اشتقاق فرآيند توليد رشته از گرامر با شروع از عنصر ابتداي گرامر و استفاده از قوانين. انواع اشتقاق از چپ :در هر قدم انجام جايگزيني روي سمت چپ ترين غيرپايانه از راست :در هر قدم انجام جايگزيني روي سمت راست ترين غيرپايانه گروه کامپيوتر اصول طراحي کامپايلرها صفحه28 : مثال از اشتقاق id + id * id توليد رشته اشتقاق راست EE EE++EE  EE++EE* *EE EE++EE* *idid EE++idid**idid idid++idid* *idid اشتقاق چپ EE  EE++EE idid++EE idid++EE**EE idid++idid* *EE idid++idid* *idid 29 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 2-3-1درخت تجزيه درخت تجزيه نشان دهنده چگونگي اشتقاق رشته اي از زبان از نماد شروع گرامر ساخت درخت تجزيه Sريشه درختقانون A = A  XYZگره اي در درخت و XYZفرزندان آن قانون A = A  Xaگره اي در درخت و X ,aفرزندان آن .پايانه ها ( حروف كوچك) تنها در برگها ديده مي شوند گروه کامپيوتر اصول طراحي کامپايلرها صفحه30 : 2-3-2درخت اشتقاق درخت تجزيه اي نشان دهنده مراحل اشتقاق بكار رفته (راست يا چپ) ‏E مثال ‏E ‏id + id * id ‏E ‏id گروه کامپيوتر * ‏E + ‏id ‏E ‏id اصول طراحي کامپايلرها صفحه31 : 2-4گرامر مبهم وجود دو اشتقاق راست يا دو اشتقاق چپ راي يك رشته در گرامر مثال ‏id + id * id اشتقاق چپ اول ‏E  E + E  id + E  id + E * E  id + id * E  id + id * id اشتقاق چپ دوم ‏E  E + E  id + E  id + E * E  id + id * id گروه کامپيوتر اصول طراحي کامپايلرها صفحه32 : 2-5نشان گذاري پسوندي نشان گذاري يك عبارت مانند E -1اگر Eمتغير و يا ثابت باشد نشان گذاري آن خودش مي شود. -2اگ=ر Eعبارت=ي بشكل E1 op E2باش=د كه Opعملگ=ر دودوي=ي است نشان گذاري آ=ن عبارتس=ت از F1 F2 Opكه F1, F2نشان گذاري E1 , E2هستند. -3اگ=ر Eعبارت=ي بشكل ( )E1باشد ،نشان گذاري براي E1همان نشان گذاري براي Eمي باشد. 952+ 952+-- گروه کامپيوتر اصول طراحي کامپايلرها )9-(5+2 )9-(5+2 صفحه33 : 2-6تعريف نحو گرا كاربرد براي ترجمه ساختارهاي زبان. ترجمه ساختار را بر حسب صفات مربوط به مولفه هاي نحوي تعيين نوع ساختار ،مكان اولين دستور توليد شده در برنامه هدف يا تعداد دستورات براي كامپايلر گروه کامپيوتر اصول طراحي کامپايلرها صفحه34 : ت==ع=ريفن==حويج=هتدار 2-6-1 گرامر و مجموعه اي از قواعد معنايي وابسته به آن صفات و محاسبه آنها .1 هر نماد در گرامر مجموعه اي از صفات دارد. .2 در هر مولد يا قانون گرامر مجموعه اي از قواعد معنايي براي محاسبه مقادير صفات نمادها وجود دارد. گروه کامپيوتر اصول طراحي کامپايلرها صفحه35 : 2-7ترجمه :ساختن درخت ترجمه الف( ساختن درخت تجزيه براي ورودي ب) اگر گره nدر درخ=ت تجزيه ب=ا نماد xاز گرامر متناظ=ر باش=دx.a ، مقدار صفت aاز نماد xدر آن گره است. ج) مقدار x.aدر گره nبا استفاده از قواعد معنايي براي صفت aهمراه با قانون گرامري استفاده ش=ده درگره nمحاسبه مي شود. گروه کامپيوتر اصول طراحي کامپايلرها صفحه36 : مثال از ترجمه قانون قواعد معنايي ‏expr.t := expr1.t // term.t // ,+, ‏expr1 + term ‏expr ‏expr.t := expr1.t // term.t // , - , ‏expr1 - term ‏expr ‏expr.t := term.t ‏term ‏expr ‏term.t := , 0, ‏term.t := , 1, 0 1 ‏term ‏term ….. ‏term.t := , 9, ….. 9 ‏term تعريف نحوگرا براي ترجمه عبارات ميانوندي به عبارت= معادل پسوندي گروه کامپيوتر اصول طراحي کامپايلرها صفحه37 : 7-1 -2درخت نحوي ‏expr.t = 95-2+ ‏expr.t = 95- ‏term.t = 2 ‏expr.t = 9 ‏term.t = 5 ‏term.t = 9 2 + گروه کامپيوتر 5 - اصول طراحي کامپايلرها 9 صفحه38 : 2-7-2انواع درخت نحوي درخت نحو مجرد هر گره نماينده يك عملگر و فرزندان آن عملوند آن درخت نحو واقعي .درخت تجزيه اي كه عملگرها خود فرزند محسوب مي شوند گروه کامپيوتر اصول طراحي کامپايلرها صفحه39 : 2-8الگوي ترجمه معنايي عملياتمعنايي كهعمليات هاييكه برنامههايي قطعهبرنامه كهقطعه متنيكه مستقلازازمتني گرامرمستقل گرامر اند شدهاند اضافهشده آناضافه قوانينآن راستقوانين سمتراست درسمت شونددر ميش=وند .ناميدهمي .ناميده تفاوت با ترجمه نحوگرا صريح بطورصريح قوانينبطور ارزشيابيقوانين ترتيبارزشيابي .نمايشترتيب .نمايش گروه کامپيوتر اصول طراحي کامپايلرها صفحه40 : 2-8-1درخت توليد شده براي الگوي ترجمه ‏expr طريقه ساخت درخت ‏expr1 } ) {print ( ,+, ‏term + يك برگ اضافي ساخته شده براي عمل معني س==اخ=تنف==رز=ند ا=ضاف=يب==را=يدر=خ=ت1- م=تصلن==مود=نا=ينف==رز=ند ب==ه گ==ره= م=ربوط ب==ه ق=انونخ=ود در 2- گ==را=مر گروه کامپيوتر اصول طراحي کامپايلرها صفحه41 : 2-9تجزيه ( پارسينگ) ت==جزيه ب==ه كمكت==حليلگر ن==حويو ب==ه ن==ام ت==حليلن==حويا=ن=جام * .م=يگ==يرد .در ت==جزيه ت==علقر=ش=ته ورود=يب==ه ز=بانم=بدا ب==رر=س=يم=يش==ود * .ب==رر=س=يط=بقس==اخ=تار و ن==حو د=س=تورا=تز=بانم=بدا ا=ن=جام م=يگ==يرد * گروه کامپيوتر اصول طراحي کامپايلرها صفحه42 : 2-9-1تجزيه -دسته بندي روشها باالبهبهپايين روشباال روش پايين: : درختتجزيه شدندرخت ساخته شدن ساخته تجزيهازاز مانند)LL(1 پايين.مانند باالبهبهپايين. باال )LL(1 پايينبهبهباال :روشپايين :روش باال تجزيهازازپايين درختتجزيه شدندرخت ساختهشدن ساخته پايين تجزيهبهبهباال مانندتجزيه مانند باال عملگر00اولويت عملگر اولويتوو ‏LR ‏LR گروه کامپيوتر اصول طراحي کامپايلرها صفحه43 : 2-9-1-1تجزيه كننده باال به پايين گرامر شروعگرامر عنصرشروع تجزيهازازعنصر آغازتجزيه آغاز پايانه غيرپايانه يكغير قانونيك جايگزينيقانون جايگزيني بلي دارد؟ كاربرددارد؟ قانونكاربرد قانون بعد سطحبعد قانونسطح بروبهبهقانون برو گروه کامپيوتر خير ديگر هم س =طحديگر سطح قانونهم عقبگردبهبهقانون عقبگرد اصول طراحي کامپايلرها صفحه44 : مثال از تجزيه باال به پايين ‏S  bBe ‏B  cf/ ce/c تجزيه: ‏S ‏e ‏B ‏c ‏Back tracking ‏Back tracking ‏S ‏b ‏e ‏S ‏b B ‏e ‏b B ‏e ‏e ‏bb B ‏c ‏f گروه کامپيوتر ‏S ‏c اصول طراحي کامپايلرها صفحه45 : 2-9-1-2تجزيه باال به پايين پيش گويانه عقبگرد ويژگيعقبگرد بدونويژگي پايينبدون باالبهبهپايين تجزيهباال روشتجزيه روش با نگاه به نماد پيش نگر در مورد استفاده از هر قانون درتصميم گيري نگر پيشنگر نمادپيش نماد مجموع=ه تمام پايان=ه هاي=ي اس=ت كه در قواني=ن مربوط ب=ه غي=ر پايان=ه در سمت چپ قرار مي گيرند گروه کامپيوتر اصول طراحي کامپايلرها صفحه46 : مثال نمادهاي پيش نگر يا مجموعه First ‏A  aB /cC / e ‏B  dA / c ‏C  cB / a } First (A):{ a, c, e } First (B): { d, c } First (C) : {c, a گروه کامپيوتر اصول طراحي کامپايلرها صفحه47 : 2-10بازگشتي چپ ظاهر شدن غير پايانه سمت چپ در سمت راست قانون بعنوان اولين عنصر حذف بازگشتي چپ پيش از تجزيه ‏A  xZ / yZ ‏Z  aZ / bZ / cZ گروه کامپيوتر ‏A  Aa / Ab / Ac / x / y اصول طراحي کامپايلرها صفحه48 : مثال حذف بازگشتي چپ ‏S  Aa / b ‏A  Ac / Sd ‏A  Ac / Aad / bd ‏S  Aa / b ‏S  Aa / b ‏A  bdZ ‏Z  cZ / adZ گروه کامپيوتر اصول طراحي کامپايلرها صفحه49 : 2-11فاكتور چپ يكسان بودن عنصر سمت چپ در حداقل دو قانون گرامر فاكتورگيري چپ ‏A  aZ فاكتورگيري از a ‏A  aB / aC ‏ZB/C گروه کامپيوتر اصول طراحي کامپايلرها صفحه50 : مثالفاكتورگيري چپ S  iEtSZ /a S  iEtS S  iEtSeS / a Eb Z  eS Eb S iEtS / iEtSes S a Eb 51 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 2-12تحليل لغوي ورودي كاراكتريازازورودي رشتهكاراكتري يكرشته دريافتيك -دريافتآن نشانههاهاازازآن استخراجنشانه -استخراجكننده تجزيهكننده نشانههاهابهبهتجزيه تحويلنشانه -تحويلمبدا برنامهمبدا كامپايلربابابرنامه شدهكامپايلر توليدشده خطايتوليد پيامهايخطاي دادنپيامهاي ارتباطدادن --ارتباط =ه-- ب==رنامم =يحات ت==وضض ف==ضاهايخخ =ذف حح =ه ب==رنا =يحات =توت==و =بارا=تو ب==ينع=بارا =ا=ليب==ينع =ا=لي ف==ضاهاي =ذف =بان- كليديز كلمات =ناسس =بان- كليديز =ههاهاووكلمات =ه ش==نا ت==شخيصش= ت==شخيص گروه کامپيوتر اصول طراحي کامپايلرها صفحه52 : مثال تحليل لغوي عبارت دستوري ‏Count ‏Count ‏Count===count ‏count ‏count+++increment ‏increment ‏increment تحليل گر لغوي تجزيه كننده گروه کامپيوتر ‏ididid===ididid+++ididid اصول طراحي کامپايلرها صفحه53 : 2-12-1رابط تحليلگر لغوي مصرف نشانه ها براي تعيين ساختار دستورات نحوي گرنحوي تحليلگر تحليل كننده=ه= (( )ت==جزيهكنند )ت==جزيه ميانگير ميانگير ميانگير واند خ كا ن كتر را ن تو ل لغوي گر تحليل دن ي لغوي گر تحليل شان د ر دا ن و ا ه ر و رگ س ا ب صفا ل ت آ ن ورودي ورودي كتر كارا در هر ز=مانح=او=يي==كب==لوكاز كارا=كترها 1- ا=شار=ه= گ==ريب==ه م=كانن==شان=ه ب==ع=ديپ==رداز=ش2- ن==شده= گروه کامپيوتر اصول طراحي کامپايلرها صفحه54 : 2-13تشكيل جدول نماد جدولي ساخته شونده توسط .فازهاي تحليل ،مورد استفاده فازهاي توليد كد تحليللغوي فازتحليل فاز لغوي .ذخيره رشته كاراكتري تشكيل دهنده شناسه در جدول تحليلنحوي فازتحليل فاز نحوي اضافه كردن نوع شناسه ،مورد استفاده(رويه ،متغير و).. تحليلمعنايي فازتحليل فاز معنايي درج مكان شناسه در حافظه در جدول توليدكد فازتوليد فاز كد استفاده از اطالعات جدول براي دسترسي به متغير و توليد كد گروه کامپيوتر اصول طراحي کامپايلرها صفحه55 : 2-13-1جدول نماد -روالها ‏Insert ( s , t) : انديس وارده جديد مربوط به رشته s نشانه tرا بر مي گرداند. ‏Lookup ( s ) : اگر sدر جدول است ،انديس آن بر مي گردد اگر نه ،صفر بر مي گردد عمل Lookupتعيين وجود شناسه در جدول نماد عمل Insertدر صورت عدم وجود شناسه ،درج آن در جدول گروه کامپيوتر اصول طراحي کامپايلرها صفحه56 : 2-13-2جدول نماد -پياده سازي : attributesصفات ‏tokenن==شان=ه: كلمات دستوري ‏mod : ptrاشاره گر ‏div ‏div در متن برنامه ‏mod ‏id ‏d ‏i ‏v ‏m ‏o ‏d ‏a دنباله كاراكترهاي ورودي گروه کامپيوتر اصول طراحي کامپايلرها صفحه57 : 2-14ماشين پشته انتزاعي ماشين پشته انتزاعي :شكل مرسوم نمايش مياني توليد كد ماشين اجزايماشين اجزاي ح=اف=ظه د=س=تورا=ت1- ح=اف=ظه داد=ه= ها 2- ماشين محاسباتماشين محاسبات م=حاس=باتص==حيح 1- د=س=تورا=تد=س=تكار=يپ==شته 2- رو=ند كنترل3- گروه کامپيوتر اصول طراحي کامپايلرها صفحه58 : 2-14-1دستورات محاسباتي قابليت پياده سازي مستقيم عملهاي پايه مانند جمع ،تفريق و ...در ماشين انتزاعي ‏ پياده سازي .عمليات پيچيده تر با دنباله اي از دستورات اوليه ماشين استفاده از نمايش پسوندي در كد ماشين براي ارزيابي يك عبارت محسباتي استفاده از پشته در حين ارزيابي عبارات ارزشيابي عبارت در ماشين مقدارپشته رويمقدار عملگربربرروي انجامعملگر انجام پشته عملوندهاازازپشته پراندنعملوندها بيرونپراندن بيرون پشته رويپشته نتيجهبربرروي دادننتيجه قراردادن قرار پشته گروه کامپيوتر اصول طراحي کامپايلرها صفحه59 : مثال ارزيابي عبارت محاسباتي با پشته ع=بار=تم=حاس=بات=ي*13 + 5 -1عدد 1را روي پشته قرار ده -2عدد 2را روي پشته قرار ده -3دوتا از باالترين عناصر پشته را با هم جمع و آن دو را از پشته بيرون ده -4نتيجه يعني عدد 4را روي پشته قرار ده -5عدد 5را روي پشته قرار ده -6دوتا باالترين عناصر پشته را در هم ضرب و آنها را بيرون ده -7نتيجه يعني عدد 20را روي پشته قرار ده گروه کامپيوتر اصول طراحي کامپايلرها صفحه60 : 2-14-2دستكاري پشته Sرا رو=يپ==شته ق=رار د=ه= ‏Push s محتويات مكان Lرا روي پشته قرار ده ‏rvalue l آدرس Lرا روي پشته قرار ده ‏lvalue l مقدار در باالي پشته را دور بريز ‏pop r-valueبروي پشته در l-valueزير آن گذاشته و هر دو از پشته خارج يك نسخه از مقدار باالي پشته را بر روي پشته فشار بده گروه کامپيوتر اصول طراحي کامپايلرها =: ‏copy صفحه61 : مثال عمليات= در پشته هنگام محاسبه day := (1461*y) div 4 + (153*m + 2 ) div 5 + d ت==رج=مه lvalue day push 2 push 1461 + rvalue y push 5 * div push 4 div + push 153 rvalue m * 62 :صفحه rvalue d + := اصول طراحي کامپايلرها گروه کامپيوتر 2-14-3كنترل جريان در ماشين مكانپرش تعيينمكان تعيين پرش ت==عيينم=حلپ==رشب==ا ع=ملوند د=س=تور 1- م=ثبت==ا م=نفيب==ا ع=ملوند د=س=تور 2- ت==عيينف==اص=له ن==سبيب==را=يپ==رش ي ت==عيينم=حلپ==رشب==ا ن==ماد هايد=س=تور 3- برداشتنعملوند امكانبرداشتن امكان عملوند بااليپشته ازازباالي پشته گروه کامپيوتر اصول طراحي کامپايلرها صفحه63 : 2-14-3-1كنترل جريان= -دستورات پ==رشهاهاب==ه م=قصدپ==رش درم=قصد =يردر =ير =دمت==اث =دم ب==هLL ت==اث عع ‏lablel l ‏lable ب==رچ=چس=بL ب==اب==ر =كميب==ا =كمي =دي =تورب== =تور =يد =جرا =سبL =ديازازحح ب==عع =ي=د=سس =جرا اا ‏gotol l ‏goto =ن gofalsel =ن l =فرب==ود =فر =ت پ==رشدر پ==شته،پ==رش ب==ا=اليپ==شته، م=قددارارب==ا=الي =نم=ق =ن =مود =ج ‏gofalse ب==ود ص== =تص =و=ورر درصص== =مود =جن=ن= =ا=ارر خخ =نgotruel =نl =بود =فر ص= =ت پ==رشدر پ==شته، ،پ==رش ب==ا=اليپ==شته م=قددارارب==ا=الي =نم=ق =ن =مود =ج ‏gotrue =بود =فرن=ن= ص= =ت =و=ورر درصص== =مود =جن=ن= =ا=ارر خخ =جرا halt =جرا ت==وق ا ت==وق ‏halt =ف =فا گروه کامپيوتر اصول طراحي کامپايلرها صفحه64 : فصل سوم :تحليلگر لغوي اهداف رفتاري: دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: آشنايي با تحليلگر لغوی عبارات و گرامر باقاعده ‏تحليلگر لغوی Lex ماشين خودکار قطعی و غير قطعی و تبديل آنها به يکدگر گروه کامپيوتر اصول طراحي کامپايلرها صفحه65 : 3-1وظايف تحليل گر لغوي -1خواندن نمادهاي ورودي ت==ول=يد د=ن=با=له ا=ياز ن==شان=ه ها 2- -3ثبت نشانه ها در جدول نمادها -4حذف توضيحات برنامه ،جاي خالي و كاراكتر مربوط به سطر جديد -5ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا گروه کامپيوتر اصول طراحي کامپايلرها صفحه66 : 3-2ارتباط با تجزيه كننده نشانه نحوي گرنحوي تحليلگر تحليل (تجزيهكننده) (تجزيه كننده) نشانه بعدي را بده لغوي گرلغوي تحليلگر تحليل برنامه مبدا نماد جدولنماد جدول ارتباط تحليل گر لغوي با تجزيه كننده گروه کامپيوتر اصول طراحي کامپايلرها صفحه67 : 3-2-1داليل جدايي فازهاي تحليل لغوي و تجزيه ف==از 1- دوف==از =يدو ط=ر=ا=حح=ي =نط=را ب==ود=ن ت==رب==ود =اد=ه=ه=ت==ر سس===اد= 1=تفاد=ه=ه=ازاز 2- =تفاد= ب==هد=دل=ل ا =پايلرب==ه كامم=پايلر =ييكا كارا=يي =يشكارا =فزا=يش ا ا=فزا 2=يل=سس =يل=ا دوفاز بيندو ميانگيربين ميانگير فاز ب==ه3- ب==ه ت==غييرا=ت =دنت==غييرا م=حدودشش===دن =پايلرووم=حدود كامم=پايلر =ملكا =ليتح=مل =ليتح ق=اب 3=ت ق=اب تحليلگرلغوي تحليلگر لغوي گروه کامپيوتر اصول طراحي کامپايلرها صفحه68 : 3-3خطاي مرحله تحليل لغوي منطبق نبودن هيچ كدام از الگوهاي مربوط به تشخيص نشانه ها در زبان مبدا با پيشوندي از ورودي ‏Panic Mode 1- ح=ذفكارا=كتر ا=ضاف=ي2- روشهاي پوشش خطا در=ج كارا=كتر از ق==لما=ف=تاد=ه= 3- ج=ايگزينيي==ككارا=كتر ب==جايكارا=كتر غ=لط 4- ج=اب=جا ن==مود=ندو كارا=كتر م=جاور ه=م 5- گروه کامپيوتر اصول طراحي کامپايلرها صفحه69 : 3-3-1پوشش خطاPanic mode - ساده ترين شيوه پوشش خطا حذف كاراكترهاي متوال=ي از باقيمانده ورودي تا پيدا شدن نشانه قابل قبول توسط تحليل گر لغوي كافي بودن براي يك سيستم محاسباتي محاوره اي گروه کامپيوتر اصول طراحي کامپايلرها صفحه70 : 3-4تحليلگر لغوي – پياده سازي روشهاي پياده سازي =پايلرLex =ندكا =ند =ويم=ان =ويم كننده=ه=ت==حليلگر =يدكنند =يد =تفاد=ه=ه=ازازت==ول =تفاد= =پايلرLex كامم =ان ت==حليلگرل==ل==غغ ت==ول ا=ا=سس برنامهنويسي متداولبرنامه زبانهايمتداول لغويبهبهزبانهاي تحليلگرلغوي نوشتنتحليلگر نوشتن نويسي ‏I/O ب==ات==سهيالت =يب==ا ورود=ي =تهورود =ته =وا=ندنر =وا س==يستم س= ‏I/O ت==سهيالت =ندن=ر=شش =يستمووخخ اسمبليوومديريت لغويبهبهاسمبلي تحليلگرلغوي نوشتنتحليلگر نوشتن مديريت رشتهورودي خواندنرشته صريحخواندن صريح ورودي گروه کامپيوتر اصول طراحي کامپايلرها صفحه71 : 3-5عبارات با قاعده قواعد تعريف -1عبارت باقاعده زبان {( }مجموعه حاوي رشته تهي) را مشخص مي نمايد. }a{ -2عبارت باقاعده اي است که زبان ( aنمادي از )Σرا مي سازد. -3اگر aو bعبارات باقاعده باشند ،اجتماع ،الحاق و Kelin Starآنها هم باقاعده است. گروه کامپيوتر اصول طراحي کامپايلرها صفحه72 : مثال عبارات باقاعده اگر } ={a,bباشد آنگاه: -1از عبارت باقاعده aUbمجموعه { }a , bساخته مي شود. -2از عبارت باقاعده ( )aUb( )aUbمجموعه { }aa, ab,ba,bbتوليد مي شود. -3عبارت باقاعده *aكليه رشته هايي با صفر يا چند aرا توليد مي كند. -4عبارت باقاعده ( * )aUbرشته هايي با صفر يا چند نماد از bيا aرا توليد مي كند. گروه کامپيوتر اصول طراحي کامپايلرها صفحه73 : 3-5-1عبارات= باقاعده – خواص جبري اصل توصيف =ت .ج=اب=جا پ==ذير ا=س / ‏aUb=bUa =ت ش==ركتپ==ذير ا=س / .الحاق شركت پذير است الحاق نسبت به /توزيع پذير است ‏a U ( b U c)=(a U b U c )(a b) c = a (b c ‏a (b U c) = a b U a c ( b U c) a = b a U c a ) a* = (a U  *a** = a گروه کامپيوتر اصول طراحي کامپايلرها صفحه74 : مثال عبارات با قاعده در زبان پاسكال تعريف باقاعده مربوط به شناسه ها Letter  A \ B \ …\ Z\ a \b\ …\ z Digit Id  0 \ 1 \ …\ 9  letter ( letter / digit ) * تعريف باقاعده اعداد بي عالمت  0 \ 1\ … \ 9 Digits  digit digit * Optional_fraction  . Digits \  Optional_exponent  ( E( + \ -\ )digits) \  Num  digits optional_fraction_exponent Digit 75 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 3-6مجموعه هاي بي قاعده س==اخ=تار=هايم=واز=ن=ه ا=يو ال=ن=ه ا=ي 1- ر=ش=ته هايت==كرار=ي2- ر=ش=ته هاييب==را=يم=قايسه دو چ=يز 3- گروه کامپيوتر اصول طراحي کامپايلرها صفحه76 : 3-7گرامر با قاعده فرم قوانين گرامر باقاعده aع=نصرياز ا==لفبا و پ==ايان=ه Bو Aغ=ير پ==ايان=ه گروه کامپيوتر ‏A→a ‏A→λ ‏A → aB اصول طراحي کامپايلرها صفحه77 : مثال چند گرامر با قاعده الف ْG: S  abSA ‏A  Aa ب ‏G: S  aSb/ab ‏G: S  bS/cS/aB پ ‏B  aB/cS /bC ‏C  aB / bS گروه کامپيوتر اصول طراحي کامپايلرها صفحه78 : 3-8توليدكننده تحليلگر لغوي - Lex روش ايجاد تحليلگر توسط Lex -1آماده شدن پرونده اي حاوي مشخصه تحليلگر براي Lex -2تبديل محتواي پرونده به برنامه در زبان C -3كامپايل برنامه توليدي همراه كتابخانه برنامه تحليل لغوي =ي ب==رنام=ه ت==حليلگر 4- خ=رو=ج : گروه کامپيوتر ‏Lex.yy.c ‏a.out خروجي دنباله نشانه ها كامپايلر Yaccمشخصه Lex.1: كامپايلر Yacc ‏C كامپايلرC كامپايلر ‏a.out اصول طراحي کامپايلرها ‏Lex.yy.c ورودي صفحه79 : Lex - 3-8-1اجزاي برنامه اعالن ها بخش هاي برنامه مبدا Lex قواعد ترجمه رويه هاي كمكيc اعالن ها ترتيب در متن برنامه مبدا Lex %% قواعد ترجمه %% رويه هاي كمكيc گروه کامپيوتر اصول طراحي کامپايلرها صفحه80 : 3-8توليدكننده تحليلگر لغوي اعالن متغيرها برنامه اعالنبرنامه بخشاعالن بخش اعالن ثوابت صريح تعاريف باقاعده (اجزاي عبارات باقاعده مورد استفاده در قواعد ترجمه) گروه کامپيوتر اصول طراحي کامپايلرها صفحه81 : Lex - 3-8-1اجزاي برنامه بخش قوانين ترجمه بالفاصله پس از %% عبارت باقاعده عمل مناسب } ع=ملم=عنايي: {1 } ع=ملم=عنايي: {2 ‏P1 ‏P2 } ع=ملم=عنايي: {3 . . . كمكيC هايكمكي =يههاي =يه ‏C رروو گروه کامپيوتر مورد استفاده دراجراي اعمال اصول طراحي کامپايلرها صفحه82 : 3-9ماشين خودكار متناهي ابزاري براي تشخيص ساختارهاي موجود زبان در دنباله ورودي از نشانه ها و پذيرفتن يا نپذيرفتن دنباله كاراكترهاي ورودي انواع ماشين هاي خودكار -1ماشين خودكار متناهي قطعي DFA -2ماشين خودكار متناهي غير قطعي NFA گروه کامپيوتر اصول طراحي کامپايلرها صفحه83 : 3-9-1ماشين خودكار قطعي متشكلازاز55تايي استمتشكل رياضياست مدلرياضي يكمدل يك تايي تابع گذر الفباي زبان )M= (Q ,  ,  , q0, F زيرمجموعه اي از Qبه نام حاالت نهايي حالت ابتدايي يا شروع ماشين مجموعه متناهي از حاالت ماشين گروه کامپيوتر اصول طراحي کامپايلرها صفحه84 : 3-9-2ماشين خودكار غير قطعي DFAاي كه مي توان از هر حالت با عناصر ورودي يكسان به حاالت مختلفي رسيد. ‏q4 ‏q7 ‏a ‏a ‏a ‏q3 ‏q3 ‏q4 ‏a ‏q1 ‏NFA گروه کامپيوتر ‏DF ‏A اصول طراحي کامپايلرها صفحه85 : مثال ازDFA ‏b ‏Z ‏b ‏a ‏a ‏A رشته پردازش شده ‏S ‏S  aS / aA ‏A  bA / b محاسبه ‏a پذيرفته توسط ماشين تبديل به ماشين قطعي [ [S , abb] ]S , aabb ‏aa []A,bb ‏aab []A , b ‏aabb [] , Z گروه کامپيوتر اشتقا ق ‏S  aS ‏ aaA ‏ aabA ‏ aabb اصول طراحي کامپايلرها صفحه86 : مثال ازNFA زبان: ( a U b)* abb 3 ‏b 2 ‏b 1 ‏a 0 شروع ‏b گروه کامپيوتر اصول طراحي کامپايلرها صفحه87 : 3-9-3تبديل NFAبه DFA تعريف :هبستگي المبدا يا ) - closure (qiبه صورت بازگشتي : -1پايهqi   -closure (qi) : -2مرحله بازگشت :اگر qjيك عنصر از closure(qj)- باشد و اگر ) qk (gj , آنگاه ) qk   -closure (qjاست. -3همبستگي qj :در )  -closure (qiاست اگر بتواند با تكرار متناهي از مرحله بازگشت بدست آيد. گروه کامپيوتر اصول طراحي کامپايلرها صفحه88 : مثال همبستگي المبدا ‏b ‏q1 ‏a ‏a ‏q0 ‏a ‏c ‏b ‏a حالت - - { } q1 , q2, q0 ‏q0 - {}q1 - ‏q1 { }q1 , q2 {}q1 - ‏q2 گروه کامپيوتر اصول طراحي کامپايلرها ‏q2 ‏c صفحه89 : a DFA بهNFA مثال تبديل NFA a q0 b a q0 q1 , q2, q0 b,c q1 e a q2 c a a q0 q1 , q2, q0 b,c a , b, c e b a,c q1 b 90 :صفحه c اصول طراحي کامپايلرها c q1 , q2 b پذيرش a گروه کامپيوتر DFA 3-9-4ساخت NFAاز عبارات با قاعده قاعده اول = اجتماع 1 ماشين ‏M1 1 2 ماشين ‏M2 2 ‏q0 )L (M2) U L (M1 گروه کامپيوتر اصول طراحي کامپايلرها صفحه91 : مثال اجتماع دو عبارت با قاعده اجتماع دو عبارت aو (b = ) aUb 1 ‏a ‏a 1 2 1 ‏q0 ‏b ‏q0 ‏q0 2 ‏b 2 گروه کامپيوتر اصول طراحي کامپايلرها صفحه92 : 3-9-4ساخت NFAاز عبارات با قاعده قاعده دوم= الحاق ماشين ‏M2 2 1 ماشين ‏M1 ‏q0 الحاق ) L ( m1 ) , L ( M2يا )L(M1) L (M2 گروه کامپيوتر اصول طراحي کامپايلرها صفحه93 : مثال الحاق دو عبارت با قاعده ا==لحاقدو ع=بار=ت a , bي==ا ab ‏b ‏q0 ‏b ‏q0 ‏a 2 گروه کامپيوتر ‏a اصول طراحي کامپايلرها ‏q0 صفحه94 : 3-9-4ساخت NFAاز عبارات با قاعده قاعده سومkelin star - 1 ماشين ‏M1 ‏L (M1) kelin star گروه کامپيوتر 1 ‏q0 ي==ا )* L (M1 اصول طراحي کامپايلرها صفحه95 : مثال كلين استار يك عبارت باقاعده كلين=س=تار ع=بار=ت aي==ا *a ا ‏a 1 1 ‏q0 *a گروه کامپيوتر اصول طراحي کامپايلرها صفحه96 : مثال تشكيل NFAاز عبارات باقاعده ‏a ‏q0 ‏b مرحله 1 ز=بان (a U b)*ab ‏q0 ‏b 2 گروه کامپيوتر 1 ‏a ‏q0 اصول طراحي کامپايلرها ‏ab صفحه97 : مثال تشكيل NFAاز عبارات باقاعده ‏a مرحله 2 ( )a U b ‏q0 ‏b مرحله 3 ‏a (*)a U b ‏q0 ‏b گروه کامپيوتر اصول طراحي کامپايلرها صفحه98 : مثال تشكيل NFAاز عبارات باقاعده مرحله 4 (ab*)a / b ‏a ‏b ‏a شروع ‏b پذيرش نهايي گروه کامپيوتر اصول طراحي کامپايلرها صفحه99 : مثال يك الگو براي تحليل گر لغوي الگوي تشخيص ساختار IFبا كمك ماشين قطعي رقم يا حرف = Letter ‏any ‏letter 6 5 ) 4 ( 3 2 ‏F 1 ‏I 0 شروع پذيرش نهايي گروه کامپيوتر اصول طراحي کامپايلرها صفحه100 : فصل چهارم :تحليل نحوي اهداف رفتاري: دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: تحليل گر نحوی و خطاهای نحوی گرامر و گرامر مستقل از متن تجزيه باال به پايين و پايين به باال تجزيه پيشگو گرامرهای LL(1)، LR، SLRو LALR گروه کامپيوتر اصول طراحي کامپايلرها صفحه101 : 4-1فوايد گرامرها -1نمايش دقيق و قابل فهمي براي زبان -2امكان ايجاد پارسرهاي كارآمد با قابليت تشخيص ساختارهاي نحوي درست و دقيق -3ايجاد ساختاري مناسب براي زبان جهت ترجمه صحيح و آشكارسازي خطا توسط گرامر درست طراحي شده -4سادگي اضافه نمودن ساختارهاي جديد به زبان گروه کامپيوتر اصول طراحي کامپايلرها صفحه102 : 4-2تجزيه كننده دريافت رشته اي از نشانه ها از تحليل گر لغوي و بررسي تعلق رشته به زبان توسط گرامر انجام بررسي طبق ساختارهاي نحوي زبان و هر مرحله گزارش خطاهاي نحوي به اداره كننده خطا رفع خطا براي پردازش ادامه ورودي بر اساس خطاهاي متداول گروه کامپيوتر اصول طراحي کامپايلرها صفحه103 : 4-2-1تجزيه كننده -ارتباطات كد مياني باقيمانده جلوبندي كامپايلر درخت تجزيه تجزيه كننده (پارسر) نشانه تحليل گر لغوي برنامه مبدا درخواست نش=انه بعدي جدول نماد موقعيت تجزيه كننده در مدل كامپايلر گروه کامپيوتر اصول طراحي کامپايلرها صفحه104 : 4-3خطاي نحوي =طوح خطا الف س سطوح -1لغوي .مانند ديكته غلط شناسه ،كلمه كليدي يا عملگر -2نحوي .مانند عبارت محاسباتي با پرانتزهاي نامتعادل -3معنايي .مانند استفاده از عملگر با عملوندهاي ناسازگار -4منطقي .مانند فراخواني بازگشتي بي نهايت گروه کامپيوتر اصول طراحي کامپايلرها صفحه105 : 4-3خطاي نحوي ب -ويژگي اداره كننده خطاي نحوي توانايي گزارش حضور خطاها را با وضوح و با دقت پوشش هر خطا با سرعت كافي به جهت امكان آشكارسازي خطاهاي بعدي -عدم كاهش بيش از حد سرعت پردازش برنامه هاي صحيح گروه کامپيوتر اصول طراحي کامپايلرها صفحه106 : 4-3خطاي نحوي ج -استراتژي هاي پوشش خطاي نحوي ‏Panic ModePhrase levelError productionGlobal correction- گروه کامپيوتر اصول طراحي کامپايلرها صفحه107 : 4-3خطاي نحوي - Panic mode ويژگي =ش- پ==وشش =ش ت==رينروو س= =ش- پ==و =ش =اده==ه=ت==رينر =اد= س= ت==جزيه-- =اي =كثرررو=و=ش=ش=هه =تفاده==ه=ا ا =ل=سس =ل= ا ت==جزيه =اي =كثر =تفاد= ق=اب ا ق=اب =ود-- ش= =ايتن= ب==ين==ن==هه .واردحح =ود =ميش= =مي =ايتن= =لقهب==ي =لقه .وارد روش كار زبان هماهنگبابازبان نشانههماهنگ پيداشدننشانه زمانپيداشدن مرحله تاتازمان نماددردرهرهرمرحله يكنماد نظرازازيك صرفنظر صرف گروه کامپيوتر اصول طراحي کامپايلرها صفحه108 : 4-3خطاي نحوي - Phrase Level ويژگي استفاده از تصحيح موضعي عدم ورود به حلقه بي نهايت با دقت در انتخاب جايگزيني ضعف در برخورد با خطاهاي اصلي قبل از نقطه تشخيص -قادر به تصحيح هر رشته ورودي روش كار پيشوندي از باقيمانده ورودي را جايگزين رشته اي مي نمايد كه امكان ادامه تجزيه باشد. گروه کامپيوتر اصول طراحي کامپايلرها صفحه109 : 4-3خطاي نحوي - Error production روش كار اضافه نمودن ساختارهاي مولد خطا به زبان از قبل تشخيص آنها در زمان تجزيه در رشته ورودي گروه کامپيوتر اصول طراحي کامپايلرها صفحه110 : 4-3خطاي نحوي - Global Correction روش كار انتخاب الگوريتم هاي تصحيح خطا با قابليت ايجاد كمترين تغييرات در ورودي براي رفع خطا رخ دادن حداقل تعداد درج ها ،حذفها در رشته ورودي گروه کامپيوتر اصول طراحي کامپايلرها صفحه111 : 4-4گرامر مستقل از متن قوانين :اعضاي مجموعه V )*(V UΣ مجموعه متغيرها يا غير پايانه ها ا=جزا=يگ==را=مر )G ( V , Σ , P , S عنصر ش=روع گرامر عناصر پايانه ويژگي زبان (اگر و تنها اگر  L S (  + ) A  u ( A  V , u  ( U V گروه کامپيوتر اصول طراحي کامپايلرها صفحه112 : 4-4-1گرامر مستقل از متن -تعاريف فرم جمله اي رشته ) w (V U يك فرم جمله ايست اگر يك .اشتقاق از Sبه wوجود داشته باشد رشته * wيك جمله است اگر يك جمله اشتقاق از Sبه wوجود داشته باشد زبان زبان Gكه با ) L(Gنش=ان مي دهند ،مجموعه { *. wا=س=ت} گروه کامپيوتر اصول طراحي کامپايلرها صفحه113 : گرامر مستقل از متن نمونه اشتقاقهاي يك رشته4 -4 S  A  AA AAA \ bA\ Ab\ a S  AA S  aA َََ  aAAA  abAAA  abaAA  ababAA  ababaA  ababaa 114 :صفحه  AA  AAAA  aAAA  abAAA  abaAA  ababAA  ababaA  ababaa اصول طراحي کامپايلرها ababaa ر=ش=ته S         AA Aa AAAa AAbAa AAbaa AbAbaa Ababaa ababaa گروه کامپيوتر S         AA aA aAAA aAAa abAAa abAbAa ababAa ababaa مثال گرامرهاي مستقل از متن S  aSb \ aSbb S  aSdd \A A  bAc \ bc S  aS aB B  bB b 115 :صفحه اصول طراحي کامپايلرها S  aSa \ aBa B  bB \ b S  abScB B  bB \b گروه کامپيوتر 4-5عبارات باقاعده -داليل استفاده براي نحو زبان =مايش==وع ق=ويم=ان=ند گ==را=مر ب==را=يت==وص=يفق=وا=ن=ينس==اد=ه= ل==غ=وي1- ن ع=دم ن==ياز ب==ه ن= زبان ا=م=كانن==مايشم=ختصرتر و ق=اب=لف==هم ت==ريب==را=ين==شان=ه ها ن==سبتب==ه گ==را=مر 2- ا=يجاد ت==حليلگ==رهايل==غ=ويكارا=تر ب==ه ص==ور=تخ=ود=كار 3- را=ه= م=ناس=بيب==را=يپ==يمان=ه س==از=يج=لوب=نديكام=پايلر ب==ه دو ب==خشق=اب=ل4- م=ديريتب==ا ت==قسيم س==اخ=تار ز=بانب==ه ل==غ=ويو غ=يرل=غ=وي گروه کامپيوتر اصول طراحي کامپايلرها صفحه116 : 4-6تجزيه -نوع باال به پايين -1سعي در يافتن سمت چپ ترين اشتقاق براي رشته ورودي دارد. -2سعي در ساختن درخت تجزيه براي رشته ورودي با شروع از ريشه و ايجاد گره هاي درخت بصورت پيش ترتيب گ==را=مرهايب==دو=نع=قبگرد LL (1) 1- انواع پارسرهاي باال به پايين گ==را=مرهايب==ا ع=قبگرد 2- گروه کامپيوتر اصول طراحي کامپايلرها صفحه117 : ت==جزيه -ن==وع ب==ا=الب==ه پ==ايين4-6 تجزيه كننده بازگشتي – كاهشي ( پيشگو) تهيه مجموعه اي از پايانه هايي كه در هر قانون براي يك غير پايانه در .سمت راست ظاهر مي شوند بررسي دنباله رشته ورودي بر طبق مجموعه باال بررسي باال با مقايسه نماد پيش نگر در ورودي با عناصر مجموعه باال گروه کامپيوتر اصول طراحي کامپايلرها صفحه118 : 4-6-1تجزيه كننده پيشگو – پياده سازي ايجاد نمودار انتقال ح=ذفب==از=گ=شتيچ=پدر گ==را=مر در ص==ور=تو=جود 1- ا=يجاد ح=ا=لش==رو=ع و ح=ا=لتن==ه=اييب==را=يگ==را=مر 2- ر=س=م ي==كم=سير از ح=ا=لتش==رو=ع ب==ه ن==ه=اييب==را=يهر ق=انونب==ه ش==كلAX1, X2,…,Xn 3- داد=نب==رچ=سبب==ه ل==به ها ي==ا ي==ا=له=ايم=سير ب==ه ص==ور=تX1,X2,…,Xn 4- گروه کامپيوتر اصول طراحي کامپايلرها صفحه119 : مثال تجزيه كننده پيشگو -نمودار انتقال مرحله 1 مرحله 2 مرحله 3 2 6 `E 9 `E 5 `T گروه کامپيوتر 1 ‏T 8 ‏T 0 ‏T 4 ‏F 7 ‏E: 3 `TE +TE` \  `FT * FT` \  (E) \ id ‏E  ‏E`  ‏T  ‏T`  ‏F  `E : ‏T: اصول طراحي کامپايلرها صفحه120 : مثال تجزيه كننده پيشگو -نمودار انتقال مرحله 4 مرحله 5 13 17 `T ) ‏F 12 ‏E 16 11 15 ‏T ( 10 14 ‏T`: ‏F: ‏id گروه کامپيوتر اصول طراحي کامپايلرها صفحه121 : مثال تجزيه پيشگو ‏S  cAd ‏A  ab \ a د=ن=با=له ورود=يcad ‏S ‏d ‏S ‏A ‏b ‏c ‏d ‏a ‏A ‏b )پ( ‏S ‏c ‏d ‏a )ب( گروه کامپيوتر ‏A ‏c ف )ا\\ل ( اصول طراحي کامپايلرها صفحه122 : 4-6-2تجزيه كننده پيشگوي غير بازگشتي بخشهاي يك تجزيه كننده غير بازگشتي ميانگير ورودي حاوي رشته ورودي براي تجزيه با عالمت $در انتهاي آن پشته $دنباله اي از نمادهاي گرامر در هر لحظه براي تجزيه با در ته آن جدول تجزيه دنباله خروجي آرايه دو بعدي عناصر ] A،[A,aيك غير پايانه و aيك پايانه دنباله تجزيه شده تا آن زمان گروه کامپيوتر اصول طراحي کامپايلرها صفحه123 : 4-6-2تجزيه كننده پيشگوي غير بازگشتي ‏a + ‏b $ ورودي اشاره گر خروجي برنامه تجزيه كننده پيشگو پشته ‏X ‏Y ‏Z Mجدول= تجزيه گروه کامپيوتر اصول طراحي کامپايلرها $ صفحه124 : 4-6-2تجزيه غير بازگشتي پيشگو – عملكرد اگر X= a = $ 1-باشد توقف تجزيه كننده اعالم خاتمه موفق تجزيه اگر X= a  $ 2-خروج Xاز پشته ،انتقال= اشاره گر ورودي به نماد بعدي در ورودي ا=گر X 3-ي==كغ=ير پ==ايان=ه ب==اشد م=را=ج=عه ب==ه وارد=ه= در ج=دو=ل][A , a و جايگزيني قانون مناسب آن از جدول گروه کامپيوتر اصول طراحي کامپايلرها صفحه125 : مثال تجزيه كننده غير بازگشتي پيشگو E E  E` M  T  N T`  F F  TE` TM +TE`\ \  +TM FN FT` **FN FT`\ \  (E) (E)\ \idid غير پايانه E E` T T` F 126 :صفحه id جدول تجزيه + * E TE` E`  +TE` T  FT` ( ) E TE` E`   T  FT` T`   T` * T`   FT` F  (E) اصول طراحي کامپايلرها گروه کامپيوتر F  id $ E`   T`   مثال تجزيه كننده غير بازگشتي پيشگو $E Id + id * id$ $E`T Id + id * id$ $E`T`F Id + id * id$ $E`T`id Id + id * id$ $E`T` +id * id$ $E` +id * id$ $E`T +id * id$ $E`T Id * id$ $E`T``F Id * id$ $E`T`id Id * id$ $E`T` *id$ $E`T`F* *id$ $E`T`F Id$ $E`T`id Id$ $E`T` $ $E` $ $ $ 127 :صفحه اصول طراحي کامپايلرها  TE` T  FT` F  id E  E +TE` T`  FT` F  id T T`  * FT` F  id  E`   T` گروه کامپيوتر 4-7مجموعه Followو First ‏First اگر رشته كه aهر رشته اي از نمادهاي گرامري باشد ،مجموعه پايانه هايي رشته هاي مشتق شده ازآنها با ، aشروع مي شوند ).first (aاست ‏Follow براي غير Aبالفاصله بعد از آن هستند .مجموعه اي از پايانهاست كه در هر شبه جمله پايانه گروه کامپيوتر اصول طراحي کامپايلرها صفحه128 : 4-7-1محاسبه )Follow ( A $ -1در ) Follow (Sقرار داده مي شود كه نماد شروع گرامر است و $نماد انتهاي س=مت راست رشته وروديست. -2اگر قانوني به صورت A  EBFوجود دارد آنگاه هرچيزي در بجز به مجموعه ) Follow (Bاضافه مي شود. )First (F -3اگر قانونهايي بشكل A  EBيا A  EBFكه ) First (Fحاوي باشد ( ) هر چيزي در مجموعه ) Follow(Aبه ) Follow (Bاضافه مي شود. گروه کامپيوتر اصول طراحي کامپايلرها صفحه129 : 4-7-1محاسبه )First ( A -1اگر Xپايانه باشد First (X) ،برابرست با {}X -2اگر X  قانون گرامر باشد  ،به ) First (Xاضافه مي شود. -3اگر Xغيرپايانه و X  Y1Y2…Ynقانون گرامر ،براي هر a ,iدر مجموعه ) First(Yiباشد و در تمام مجموعه هاي ) First ( Y1)…First (Ynقرار داشته باشد a ،به مجموعه ) First (Xاضافه مي شود. گروه کامپيوتر اصول طراحي کامپايلرها صفحه130 : First وFollow مثال مجموعه هاي E E  E` M  T  N T`  F F  TE` TM +TE`\ \  +TM FN FT` **FN FT`\ \  (E) (E)\ \idid First (E) = First (T) = First (F) = { ( , id } First (E`) = { + ,  } First (T`) = { * ,  } Follow (E) = Follow (E`) = { ) , $ } Follow (T) = Follow (T`) = { + , ) , $ } Follow (F) = { + , * , ) ,$ } 131 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 4-8ايجاد جدول تجزيه -1براي هر قانون از گرامر بصورت A  aمراحل 2و 3تكرار شود. -2براي هر پايانه aدر مجموعه First (E)، A  Eبه ] M[A , aاضافه شود. -3اگر در ) First (Eباشد A  a ،براي هر پايانه bدر ) Follow (Aبه ], b اضافه شود .اگر در ) First (Eو $در ) Follow ( Aباشد A  a ،به ]M [ A , $ اضافه ش=ود. ‏M[A گروه کامپيوتر اصول طراحي کامپايلرها صفحه132 : مثال جدول تجزيه `TE +TE` \  `FT * FT` \  (E) \ id }First (TE`) = First (T) = { ( , id $ ) ( ‏E `TE گروه کامپيوتر * + ‏id `E  TE اصول طراحي کامپايلرها ‏E  ‏E`  ‏T  ‏T`  ‏F  غير پايانه ‏E صفحه133 : 4-9شناسايي گرامر )LL(1 -1گرامري كه ابهام يا بازگشتي چپ ندارد. -2اگر A  E \ Fدو قانون از Gباشند براي هيچ پايانه اي مانند ،aهر دوي Eو Fرشته هاي شروع شونده با aتوليد نمي كنند. -3حداكثر يكي از Eو Fمي توانند رشته تهي توليد كنند. -4اگر توليد نمي كند. ‏F  ،E رشته اي شروع شونده با پايانه هاي گروه کامپيوتر مجموعه )Follow ( A اصول طراحي کامپايلرها صفحه134 : LL (1) مثال گرامر E  E`  T  T`  F  TE` +TE` \  FT` * FT` \  (E) \ id : است زيراLL (1) گرامر First ( +TE`) = { + }, First (  ) , {  }  ( + ) =  First ( E` ) = { + ,  } , follow ( E` ) = { $ , ) } , { + ,  } { $ , ) } =  First ( *FT) = { * } , First (  ) = {  } , { * }  {  } =  First ( T`) = {  , * } , Follow ( T`) = { $ , ) , + } , { , * }  { $ , ) + } =  First ((E)) { ( } , First ( id ) = { id } , { ( } { id } =  135 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر مثال گرامر )LL (1 دول ت ج $ ‏b ‏a ‏e ‏t 2 3,4 4 ‏i 1 ج زي ه ‏S  iEtSF 1 ‏Sa 2 ‏F  eS 3 ‏FS 4 ‏Eb 5 ‏S ‏F ‏E 5 گرامر ) LL (1نيست. گروه کامپيوتر اصول طراحي کامپايلرها صفحه136 : 4-10پوشش خطا در تجزيه پيشگو خطا نوعخطا نوع -1عدم تطابق پايانه موجود در باالي پشته با نماد ورودي بعدي -2خالي بودن وارده جدول براي غير پايانه Aدر باالي پشته و پايانه بعنوان نماد ورودي بعدي روش پوش=ش خطا كنار گذاردن نمادهاي ورودي بعدي تا زمان ظاهر شدن شناسه اي متعلق به مجموعه اي از شناسه هاي هماهنگ كننده گروه کامپيوتر اصول طراحي کامپايلرها صفحه137 : ‏a 4-10-1انتخاب مجموعه هماهنگ كننده گذاردن تمام نمادهاي ) Follow (Aدر مجموع=ه هماهن=گ كننده غي=ر مجموعه پايانه و بررسي ورودي تا زمان ظاهر شدن يك عضو از آن گذاردن مجموع=ه نمادهاي شروع كننده س=اختارهاي س=طح باالتر زبان به همراه مجموع=ه هماهن=گ كننده س=اختارهاي س=طوح پايي=ن ت=ر زبان مانند كلمات كليدي به اضافه مجموعه Followها گذاردن مجموعه ) First (Aبه مجموعه هماهنگ كننده غير پايانه A قانونهاي توليد كننده غير پايانه تهي براي غير پايانه هاي قادر به اشتقاق تهي گروه کامپيوتر اصول طراحي کامپايلرها صفحه138 : مثال بروز خطا در تجزيه پيشگو -1در صورت خالي بودن وارده جدول ،نماد ورودي حذف -2در صورت ورودي ( synchاز مجموعه نشانه هاي هماهنگ كننده ) Follow خروج غير پايانه باالي پشته براي امكان ادامه تجزيه در ص==ور=تع=دم ت==طاب=قن==شان=ه ب==ا=اليپ==شته ب==ا ن==ماد ورود=ي ،خ=رو=ج 3- ن==شان=ه از پ==شته گروه کامپيوتر اصول طراحي کامپايلرها صفحه139 : مثال بروز خطا در تجزيه پيشگو `TE +TE` \  `FT * FT` \  (E) \ id ر=ش=ته ورود=يدارا=يخ=طاي)id + * id ‏E  ‏E`  ‏T  ‏T`  ‏F  مرحله 1 $ ‏E`   ‏T`   ) ( * ‏E ‏TE` E`   `T  FT ‏id ‏E `TE` E`  +TE `T  FT * T` ‏T`   )FT` F  (E گروه کامپيوتر + غير پايانه ‏T`   ‏F  id اصول طراحي کامپايلرها ‏E `E ‏T `T ‏F صفحه140 : مثال بروز خطا در تجزيه پيشگو 2 مرحله غير پايانه E E` T id + ( * 141 :صفحه F  id T`   synch $ synch synch E TE` E`   E`   T  FT` synch synch E TE` E`  +TE` T  FT` synch T` F ) T` * T`   T`   FT` F  (E) synch synch synch اصول طراحي کامپايلرها گروه کامپيوتر مثال بروز خطا در تجزيه پيشگو 3 مرحله $E )Id *+ id$ $E Id *+ id$ $E`T` Id *+ id$ $E`T`F Id *+ id$ $E`T`id Id *+ id$ $E`T` *+ id$ $E`T`F* *+ id$ $E`T`F + id$ $E`T` + id$ $E` + id$ $E`T+ + id$ $E`T Error M [F, + ] = synch F has been poped id$ $E`T`F Id$ $E`T`id Id$ $E`T` $ $E` $ $ $ 142 :صفحه error , skip ) id is in First ( E) اصول طراحي کامپايلرها گروه کامپيوتر 4-11تجزيه باال به پايين – انتقال كاهش سعي در ايجاد درخت تجزيه با شروع از برگها و رفتن به سمت ريشه = كاهش جايگزيني يك زيررشته خاص منطبق با سمت راست يك قانون با نماد سمت چپ همان قانون گروه کامپيوتر اصول طراحي کامپايلرها صفحه143 : مثال تجزيه باال به پايين – انتقال كاهش د=ن=با=له ورود=يabbcde ‏ aABe ‏ Abc \ b ‏ d ‏S ‏A ‏B ‏abbcde ا=ن=تقا=ل كاهش aAbcde ‏aAde ا=ن=تقا=ل كاهشaABe ‏S ا=ش=تقاقabbcde ‏aAbcde  گروه کامپيوتر ‏aABe  aAde  اصول طراحي کامپايلرها ‏S صفحه144 : 4-11-1تجزيه انتقال كاهش -دستگيره زير رشته اي منطبق بر سمت راست يك قانون و ايجاد كننده يك كاهش به غير پايانه سمت چپ آن قانون ويژگي دستگيره زير رشته اي كه با عمل كاهش با توانايي هدايت تجزيه كننده به عنصر شروع گرامر گروه کامپيوتر اصول طراحي کامپايلرها صفحه145 : مثال دستگيره د=ن=با=له ورود=يabbcde ‏abbcde ا=ن=تقا=ل كاهش aAbcde ‏aAde ا=ن=تقا=ل كاهشaABe ‏S ‏ aABe ‏ Abc \ b ‏ d ‏S ‏A ‏B ‏Ab َA  Abc دستگيره ها ‏Bd گروه کامپيوتر اصول طراحي کامپايلرها صفحه146 : مثال دستگيره (1) E  E + E (2) E  E * E گرامر ) (3) E  ( E (4) E  id مرحله 1 ‏EE+E ‏E+E*E سمت راست ترين اشتقاق ‏ E + E * id3 ‏ E + id2 * id3 ‏ id1 + id2 * id3 گروه کامپيوتر اصول طراحي کامپايلرها صفحه147 : مثال دستگيره جمله دستگيره ‏id1 ‏id1 + id2 * id3 ‏id2 ‏E + id2 * id3 ‏id3 ‏E + E * id3 ‏E*E ‏E+E*E گروه کامپيوتر دستگيره ها اصول طراحي کامپايلرها صفحه148 : 4-11-1-1دستگيره -هرس نمودن مزيت هرس نمودن مراحل هرس نمودن توانايي توليد معكوس سمت راست ترين اشتقاق -1اگر Wجمله گرامر براي تجزيه باشد ،آنگاه W = Ynشبه جمله راست nام از سمت راست ترين اشتقاق نامشخص . -2يافتن دستگيره Bn-1درYn-1و كاهش آن تا بدست آمدن شبه جمله راست .Yn-2 -3توقف عمليات در صورت رسيدن به عنصر شروع گرامر S گروه کامپيوتر اصول طراحي کامپايلرها صفحه149 : مثال هرس نمودن دستگيره (1) E  E + E (2) E  E * E ‏id1 + id2 * id3 ) (3) E  ( E (4) E  id قانون كاهشي شبه جمله راست دستگيره ‏E  id ‏id1 ‏id1 + id2 * id3 ‏E  id ‏id2 ‏E + id2 * id3 ‏E  id ‏id3 ‏E + E * id3 ‏EE*E ‏E*E ‏E+E*E ‏EE+E ‏E+E ‏E+E ‏E گروه کامپيوتر اصول طراحي کامپايلرها صفحه150 : 4-11-2مشكالت هرس نمودن دستگيره -1تعيين زير رشته مناسب براي كاهش در يك شبه جمله راست -2انتخاب قانون مناسب در موارد وجود دو يا بيشتر قانون با زير رشته يكسان در سمت راست گروه کامپيوتر اصول طراحي کامپايلرها صفحه151 : 4-12تجزيه انتقال كاهش با پشته استفاده از پشته به منظور نگهداري نمادهاي گرامر استفاده از ميانگير ورودي جهت نگهداري رشته مورد نظر براي تجزيه روند تجزيه ا=ن=تقا=لص==فر ي==ا چ=ند ن==ماد ب==ه پ==شته ت==وس=طت==جزيه 1- كننده= ادا=م=ه م=رح=له 1ت==ا ز=مانپ==يدا ش==دني==كد=س=تگيره= در ب==ا=الي2- پ==شته كاهشد=س=تگيره= پ==يدا ش==ده= ب==ه س==متچ=پق=انونگ==را=مري3- م=ناس=بآن گروه کامپيوتر اصول طراحي کامپايلرها صفحه152 : 4-12-1عمليات انتقال كاهش با پشته انتقال انتقال نماد بعدي ورودي به باالي پشته كاهش وجود انتهاي سمت راس=ت دستگيره در باالي پشته و يافتن سمت چپ آن و تصميم گيري براي جايگزيني پذيرش اعالم تكميل موفقيت آميز عمل تجزيه خطا تشخيص خطاي نحوي و فراخواني رويه پوشش خطا گروه کامپيوتر اصول طراحي کامپايلرها صفحه153 : مثال تجزيه انتقال كاهش با پشته (1) E  E + E گرامر (2) E  E * E ) (3) E  ( E (4) E  id ‏EE+E ‏E+E*E رشته id1 + id2 * id3 ‏ E + E * id3 ‏ E + id2 * id3 ‏ id1 + id2 * id3 گروه کامپيوتر اصول طراحي کامپايلرها صفحه154 : مثال تجزيه انتقال كاهش با پشته پشته $ ورودي عمل id1 + id2 * id3 $ Shift $id1 + id2 * id3 $ Reduce by E  id $E + id2 * id3 $ Shift id2 * id3 $ Shift $E + $E + id2 * id3 $ Reduce by E  id $E + E * id3 $ Shift id3 4 Shift $E + E * $E + E * id3 $ Reduce by E  id $E+E*E $ Reduce by E  E * E $E+E $ Reduce E  E + E $E $ accept 155 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 13 -4تجزيه انتقال كاهش – پيشوند قابل وقوع مجموعه پيشوندهاي شبه جمالت راست ظاهر شونده در پشته يك تجزيه كننده انتقال= كاهش يا پيشوندي از يك شبه جمله راست عبور نكننده از انتهاي راست سمت راست ترين دستگيره آن شبه جمله گروه کامپيوتر اصول طراحي کامپايلرها صفحه156 : 4-14تجزيه انتقال كاهش -تناقض ها ترديد در عمل انتقال يا عمل كاهش در زمان تصميم تناقض انتقال -كاهش گيري براي تجزيه كننده تناقض كاهش كاهش وجود چند قانون براي كاهش يك رشته در يك زمان گروه کامپيوتر اصول طراحي کامپايلرها صفحه157 : 4-14تجزيه كننده عملگر اولويت گرامر نوع عملگر قوانين 1- . نداشته باشد در س==مترا=س=تق=وا=ن=ينت==ول=يد ،ه=يچ كدا=م 2- .از دو پ==ايان=ه كنار ه=م ن==باش=ند گروه کامپيوتر اصول طراحي کامپايلرها صفحه158 : مثال عملگر اولويت – گرامر عملگر وجود دو غير پايانه در سمت راست قانون ‏E  EAE \ ( E ) \ - E \ id \ A  +\-\/ گرامر عملگر نيست گروه کامپيوتر اصول طراحي کامپايلرها صفحه159 : 4-14-1نقطه ضعفهاي روش عملگر اولويت دشوار بودن اداره نمودن نشانه هايي مانند عالمت منها با دو اولويت متفاوت )دود=ييي==ا ي==گان=ي( عدم اطمينان از نتيجه درست تجزيه به دليل رابطه نزديك بين گرامر زبان در حال تجزيه و تجزيه كننده عملگر اولويت قابليت تجزيه بر روي تنها رده كوچكي از گرامرها گروه کامپيوتر اصول طراحي کامپايلرها صفحه160 : 4-14-2عملگر اولويت – تعيين اولويتها تعريف 3رابطه اولويت مجزاي بين هر زوج از پايانه ها رابطه <. b مفهوم ‏a اولويت aكمتر از bاست. ‏a = b اولويت aو bيكسان است. ‏a.> b اولويت aبيش از bاست. گروه کامپيوتر اصول طراحي کامپايلرها صفحه161 : 4-14-2عملگر اولويت روشهاي تعيين اولويت =لويت=وجود ب==ينخ=ود ع=ملگرها 1- ا=س=تفاد=ه= از ش==ركتپ==ذيريو او م در زبان مانند اولويت هاي زير *,+ <. * .> + ا=يجاد گ==را=مر غ=ير م=بهميب==را=يز=بانو در=خ=تت==جزيه آنب==ا 2- قابليت انعكاس شركت پذيري و اولويت صحيح بين عناصر پايانه در درخت گروه کامپيوتر اصول طراحي کامپايلرها صفحه162 : مثال عملگر اولويت – تعيين اولويتها * + ( ) ‏id $ `TE +TE` \  `FT * FT` \  (E) \ id ‏E  ‏E`  ‏T  ‏T`  ‏F  >. .< >. < .< >. + . * >. .< >. < >. >. . ( <.< = < .< . . >. >. >. >. ) >. >. Id >. >. $ << .< . گروه کامپيوتر <= .اصول طراحي کامپايلرها صفحه163 : 4-14-3استفاده از اولويت ها ق=رار داد=نروا=ب=طاو=لويتب==ينپ==ايان=ه ها در ر=ش=ته ورود=يب==ه ت==جزيه 1- -2قرار دادن عالمت $ابتدا و انتهاي رشته ورودي به همراه اولويت آن نسبت به اولين پايانه و آخرين پايانه رشته ح=ذفغ=ير پ==ايان=ه ها از ج=مله ورود=ي3- -4پويش از انتهاي چپ رشته تا رسيدن به اولين اولويت گروه کامپيوتر >. اصول طراحي کامپايلرها صفحه164 : 4-14-3استفاده از اولويت ها -5پويش به عقب ( چپ ) از همان نقطه با پشت سرگذاردن هر = تا رسيدن به <. =پو=ل=ينرا=س=ت .5در م=رح=له . > 6- ت==عييند=س=تگيره= ش==ام=لهر چ=يزيدر س==متچ ا < و س==مت گروه کامپيوتر اصول طراحي کامپايلرها صفحه165 : مثال استفاده از اولويت ها رشته ورودي به تجزيه ‏id + id * id $ <. Id .> + <. Id .> * <. id .> $. مرحله :1 زمان ديدن اولين > .از سمت چپ بين اولين idو + مرحله :2 پويش به عقب ردشدن از روي = در صورت وجود برخورد با < .اولين گروه کامپيوتر اصول طراحي کامپايلرها صفحه166 : مثال استفاده از اولويت ها مرحله :3دستگيره بين اولين > .و <.يعني اولين idسمت چپ و تبديل آن به E :مرحله 4تشخيص ساير دستگيره هاي مشابه { } id2 , id3و باقيمانده دنباله ورودي به شكل $ >. * . < + .< $ :مرحله 5دستگيره بعدي بين +و * و انتهاي راست آن بين * و $يعني E * Eو تبديل به ‏E :مرحله6 دستگيره بعدي بين +و $يعني E + Eو تبديل به Eو پايان تجزيه انتقال كاهش – عملگر اولويت گروه کامپيوتر اصول طراحي کامپايلرها صفحه167 : 4-14-4عملگر اولويت – اولويتهاي بديهي -1اگر عملگر Aاولويت بيشتر از عملگر Bداشته باشد ،روابط A . > Bو B <. A بين آنها برقرار است. -2اگر Aو Bعملگرهاي با اولويت يكسان باشند ،اگر هر دو شركت پذير از راست هستند: B <. A , A <. Bو پركت پذير از چپ B .> A , A .> B : گروه کامپيوتر اصول طراحي کامپايلرها صفحه168 : 4-14-4عملگر اولويت – اولويتهاي بديهي -3براي تمام عملگرهاي مانند Aروابط زير برقرار است. ‏A ( <. ‏A >) . >A . ‏A .> $ $ <. A ) ‏A <. id ‏id .> A ( A <. -4روابط زير هميشه برقرارند: <. id ) ) >. گروه کامپيوتر ( >id . ) ( <. $ ( )=( >id . ( $ <. ) $ <. id .> $ اصول طراحي کامپايلرها صفحه169 : مثال عملگر اولويت -جدول اولويت =لويت ش==ركتپ==ذير از ) ت==وا=ن( ترينو و  1ب==ا=ال ارا=س=ت فرضيات ترينو=لويتب==ع=ديو ش==ركتپ==ذير از چ=پ* 2- و /ب==ا=ال ا =لويت ش==ركتپ==ذير از چ=پ3- + ت==رينو و ا و – پ==ايين گروه کامپيوتر اصول طراحي کامپايلرها صفحه170 : مثال عملگر اولويت -جدول اولويت + - * / ‏ ‏id ( ) $ >. >. .< .< .< .< .< >. >. + >. >. .< .< .< .< .< >. >.جدول اولويت ها * >. >. .< .< .< >. >. >. >. / >. >. .< .< .< >. >. >. >. >. >. .< .< .< >. >. >. >.  ‏Id >. >. >. >. >. >. >. ( <= .< .< .< .< .< .< . ) >. >. >. >. >. >. >. .< .< .< .< .< .< .< $ گروه کامپيوتر اصول طراحي کامپايلرها صفحه171 : 4-14-5عملگر اولويت -توابع اولويت دو تابع fو gبراي كدگذاري جدول اولويت براي پارسر f( a ) <. g ( b ) -1هر گاه <. b ‏a f( a ) = g ( b ) -2هر گاه a = b f( a ) .> g ( b ) -3هر گاه a .> b گروه کامپيوتر اصول طراحي کامپايلرها صفحه172 : مثال عملگر اولويت -توابع اولويت جدول اولويت + - * / ‏f 2 2 4 4 4 ‏g 1 1 3 3 5 * < f ( * ) < g( id ) . ) f ( id ) > g ( id گروه کامپيوتر ( ) ‏id $ 0 6 6 0 5 0 5 0 ‏Id ‏id .> id اصول طراحي کامپايلرها صفحه173 : مثال عملگر اولويت -گراف روابط اولويت )f (id )g (id )*( g )*( f )f (+ )g (+ )g ($ )f ($ گروه کامپيوتر + * ‏Id $ ‏f 2 4 4 0 ‏g 1 3 5 0 اصول طراحي کامپايلرها صفحه174 : 4-14-5تجزيه عملگر اولويت -پوشش خطا انواع خطا پوش=ش خطا ع=دم و=جود را=ب=طه ب==ينع=نصر ب==ا=اليپ==شته و 1- ع=نصر ورود=ي ع=دم ت==طاب=قم=جموعه ع=ناصر پ==يمايشش==ده= 2- در پ==شته و آماد=ه= كاهشب==ا ه=يچ كدا=م از ق=وا=ن=ينگ==را=مر در حالت اول :قرار گرفتن اشاره گرهايي به توابع رفع خطا و فراخواني آنها هنگام وقوع خطا گروه کامپيوتر اصول طراحي کامپايلرها صفحه175 : 15 -4تجزيه كننده هاي LR داليل پر طرفداربودن تجزيه كننده هاي LR ق=اب=ليتت==شخيصس==اخ=تار=هايز=بان=ه=ايم=ستقلاز م=تن1- ع=موم=يت==رينرو=شت==جزيه ا=ن=تقا=لكاهشغ=ير ب==از=گ=شتي2- ت==وا=ناييت==جزيه رد=ه= گ==را=مرهايق=اب=لت==جزيه پ==يشگ==و 3- س==ريعترينت==شخيصخ=طاين==حويب==ا پ==ويشچ=پب==ه را=س=ت4- گروه کامپيوتر اصول طراحي کامپايلرها صفحه176 : 4-15-1تجزيه -LRنقاط ضعف كار ز=ياد در س==اخ=تآنب==را=يگ==را=مر ز=بانب==شكلد=س=تي1- -2نيازمند ابزار مولد تجزيه كننده LRبراي ايجاد گروه کامپيوتر اصول طراحي کامپايلرها صفحه177 : 4-15-2تجزيه -LRانواع LRس==اد=ه= ي==اSLR =ف==ا CLR LRم=تع=ار ي LRپ==يشن==گر يا LALR ساده ترين كمترين توانايي قدرتمند ترين گرانترين جدول تجزيه متفاوت قدرت متوسط هزينه متوسط كار كم براي ايجاد و قابليت تجزيه اكثر گرامرها گروه کامپيوتر اصول طراحي کامپايلرها صفحه178 : 4-15-3تجزيه LR -اجزاء ‏a1 … ‏ai ‏b … ‏an ‏a خروجي برنامه تجزيه . . . ‏S ‏Action ‏goto $ گروه کامپيوتر اصول طراحي کامپايلرها صفحه179 : 4-15-4تصميم گيري تجزيه LR نشانه ورودي a تصميم گيري الگوريتم در هر لحظه عنصر پشته عنصر باالي پشته()S رشته اي به شكل s0X1s1X2s2….Xmsmكه smدر باالي پشته قرار دارد. يك نماد گرامر گروه کامپيوتر يك حالت تجزيه اصول طراحي کامپايلرها صفحه180 : 4-15-5تجزيه – LRجدول تجزيه تابع انتقالي ( gotoدريافت يك حالت و نماد و توليد حالت جديد) اجزاي جدول تجزيه تابع عملكرد action ]action [sm , ai ‏goto ‏action ‏a1 a2 … ai ‏m جدول تجزيه گروه کامپيوتر اصول طراحي کامپايلرها صفحه181 : 4-15-5تجزيه – LRجدول تجزيه مقادير مختلف موجود جدول براي]action [ sm ,ai ‏sn = shift aروي پشته قرار داده و بعد nروي پشته مي رود ‏rn=reduce انجام عمل كاهش با دستور nام پشته گروه کامپيوتر ‏accept پايان موفق تجزيه اصول طراحي کامپايلرها ‏error خطاي نحوي صفحه182 : 4-15-6تجزيه – LRروال تجزيه -1قرار دادن رشته ورودي wبه همراه عالمت $در انتهاي آن در ميانگير ورودي -2گذاردن s0در پشته به عنوان اوليه حالت -3خواندن وارده جدول تجزيه براي []$ , s0 -4اجراي عمل در نظر گرفته شده در جدول [ ]shift , reduce, accept , error گروه کامپيوتر اصول طراحي کامپايلرها صفحه183 : 4-15-6تجزيه – LRروال تجزيه :ا=گر پ==پكرب=نديپ==شته در ي==كل==حظه ب==صور=ت5- ‏S0 X1 s1 X2 s2….Xm sm , ai ai+1 …. an $ -6با خواندن aنماد ورودي جاري و sحالت باالي پشته مراجعه به جدول و انجام يك مورد : ‏Shift , reduce -7تبديل رشته روي پشته پس از s Shiftبصورت : ‏S0 X1 s1 X2 s2…Xm sm ai s, ai+1…an $ گروه کامپيوتر اصول طراحي کامپايلرها صفحه184 : 4-15-6تجزيه – LRروال تجزيه -8تبديل رشته روي پشته پس از A reduceبصورت: ‏S0 X1 s1 X2 s2… Xm-r sm-r A s , ai ai+1… an $ -9اعالم پايان موفق تجزيه با ديدن acceptدر جدول -10فراخواني رويه پوشش خطا با ديدنerror گروه کامپيوتر اصول طراحي کامپايلرها صفحه185 : LR مثال تجزيه 1EE+T 2ET 3TT*F 4TF 5 F  (E) 6 F  id action id 0 * s5 ( ) $ s4 1 s6 2 r2 s7 r2 r2 3 r4 r4 r4 r4 4 s4 r6 r6 r6 6 s5 s4 7 s5 s4 T F 1 2 3 8 2 3 9 3 r6 10 8 s6 9 r1 s7 r1 r1 10 r3 r3 r3 r3 11 r5 r5 r5 r5 اصول طراحي کامپايلرها E acc s5 5 186 :صفحه + goto s11 گروه کامپيوتر LR مثال تجزيه (1) 0 پشته id * id + idتجزيه ورودي عمل جدول id * id + id $ s5 (2) 0 id 5 *id + id $ r5 (3) 0 F 3 *id + id $ r3 (4) 0 T 2 *id + id $ s7 (5) 0 T 2 * 7 *id + id $ s5 (6) 0 T 2 * 7 id 5 + id $ r5 (7) 0 T 2 * 7 F 10 + id $ r2 (8) 0 T 2 + id $ r1 (9) 0 E 1 + id $ s6 id $ s5 (11) 0 E 1 + 6 id 5 $ r5 (12) 0 E 1 + 6 F 3 $ r3 (13) 0 E 1 + 6 T 9 $ r9 (14) 0 E 1 $ acc (10) 0 E 1 + 6 187 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر 4-15-7تفاوت گرامر LLو LR گرامر )LL(K توانايي تشخيص وقوع سمت راست يك رشته با ديدن تمام آنچه كه از آن سمت راست مشتق شده ،با استفاده از Kنماد پيش نگر گرامر )LR(K توانايي تشخيص وقوع سمت راست تنها با ديدن اولين Kنماد از آنچه توسط سمت راست آن مشتق شده گروه کامپيوتر اصول طراحي کامپايلرها صفحه188 : 4-16تجزيه SLR تعريف يك قلم يك قلم براي LRقانوني از گرامر با يك نقطه در مكاني در سمت راست آن مثال اقالم مختلف قانون ‏A. ‏XYZ ‏A  XYZ ‏A ‏X .YZ ‏A ‏XY .Z گروه کامپيوتر اصول طراحي کامپايلرها ‏A  XYZ. صفحه189 : 4-16تجزيه SLRتقسيم بندي اقالم اقالم هسته اقالم غير هسته شامل قلم اوليه S`  Sو تمام اقالمي كه نقطه آنها در انتهاي چپ نيست. .اقالمي كه نقطه در انتهاي چپ است گروه کامپيوتر اصول طراحي کامپايلرها صفحه190 : 4-16-1تجزيه -SLRايجاد قلم مرحله :1تعيين يك نقطه شروع براي گرامر ‏S` S ‏S  AaAb ‏S  BbBa ‏A ‏B مرحله :2گذاردن نقطه در اولين مكان سمت راست قانونها گروه کامپيوتر اصول طراحي کامپايلرها ‏S  AaAb ‏S  BbBa ‏A ‏B ‏S` . S ‏S  .AaAb ‏S  .BbBa ‏A. ‏B. صفحه191 : 4-16-1تجزيه -SLRايجاد قلم مرحله :3گذاردن نقطه در مكانهاي بعدي در سمت راست قانونها ‏S  AaA .b ‏S  BbB .a ‏S  Aa .Ab ‏S  Bb .Ba ‏A. ‏B. ‏S` S . ‏S  A .aAb ‏S  B .bBa ‏S  AaAb . ‏S  BbBa . گروه کامپيوتر اصول طراحي کامپايلرها صفحه192 : 4-16-2تجزيه -SLRگروه اقالم گروه اقالم ) LR(0يا گروه ) LR(0متعارف فراهم كننده مبناي ساخت تجزيه كننده هاي SLR ساخت به وسيله دو تابع closureو gotoبه همراه گرامر افزوده گروه کامپيوتر اصول طراحي کامپايلرها صفحه193 : 4-16-2تجزيه -SLRگروه اقالم -1اضافه شدن هر قلم= موجود در مجموعه اقالم Iبه مجموعهclosure تابع closure -2اضافه شدن قلم= B  .Kدرصورت وجود A  M .BNدرclosure و وجود قانون B  Kدر گرامر گروه کامپيوتر اصول طراحي کامپايلرها صفحه194 : مثال تجزيه -SLRگروه اقالم يك گروه قلم داده شده `I ={ [E } ] .E ‏E` E ‏EE+T\T ‏TT*F\T ‏F  (E) \ id ‏E`  .E ‏E  .E + T ‏E  .T ‏T  .T * F = )Closure (I ‏T  .F )F  .(E ‏F  id گروه کامپيوتر اصول طراحي کامپايلرها صفحه195 : 4-16-2تجزيه -SLRاقالم معتبر يك قلم به صورت A  B1.B2براي پيشوند قابل وقوع MB1معتبر است اگر: اشتقاقي به صورت* M A W * M B1B2 W S` وجود داشته باشد. گروه کامپيوتر اصول طراحي کامپايلرها صفحه196 : مثال تجزيه -SLRاقالم معتبر *E+T 1 ‏E` E ‏EE+T\T ‏TT*F\T ‏F  (E) \ id يك پيشوند قابل وقوع 4 كه پس از خواندن آن رفتن به حالت ‏I7 2 ‏T  T * .F )I7 F  .(E : F  .id گروه کامپيوتر 3 اصول طراحي کامپايلرها اقالم معتبر براي صفحه197 : 4-16-2تجزيه -SLRگروه اقالم مجموعه closureبر روي مجموعه [ ]A  Q X Kبا شرط وجود ] A  [ Q . X Kدر . I يا تابع ) goto(I , X نماد مجموعه گرامر اقالم مجموعه اي از اقالم معتبر براي پيشوند قابل وقوع R Xبا وجود مجموعه اقالم معتبر براي Rدر . I گروه کامپيوتر اصول طراحي کامپايلرها صفحه198 : مثال تجزيه -SLRگروه اقالم گروه قلم داده شده} ]I ={ [E`  E.] , [ E`  E. + T ‏E` E ‏EE+T\T ‏TT*F\T ‏F  (E) \ id ‏EE+.T ‏T  .T * F ‏T  .F = )goto (I , + )F  .(E ‏F  .id گروه کامپيوتر اصول طراحي کامپايلرها صفحه199 : 4-16-2تجزيه -SLRايجادگروه اقالم)LR(0 -1گذاردن }] closure { [ S`  .Sدر مجموعه گروه C -2براي هر مجموعه اقالم Iدر Cو هر نماد مانند Xانجام بده: -1 -2اگر ) goto ( I , Xتهي نيست و در Cنيست انجام بده: عقبگرد ،تا زماني كه هيچ مجموعه باي اضافه شدن نمانده goto ( I , X) -2-1-1را به Cاضافه كن. گروه کامپيوتر اصول طراحي کامپايلرها صفحه200 : ايجادگروه اقالم-SLR مثال تجزيه E`  .E E  .E + T I0 E  .T : T  .T * F I 2: E` E EE+T\T TT*F\T F  (E) \ id T  T. * F I3: T  F. T  .F F  (.E) F  .(E) E  .E + T F  .id I1: E  T. E  .T I4 : E`  E. E  E. + T T  .T * F T  .F I5 F  id. : F  .(E) F  .id 201 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر ايجادگروه اقالم-SLR مثال تجزيه EE + .T I6 T  .T * F : T  .F F  (E.) I8 : E  E. + T E` E EE+T\T TT*F\T F  (E) \ id F  .(E) F  .id I9 E  E + T. : T  T. * F I11: F  (E). T  T * .F I7 F  .(E) : F  .id 202 :صفحه I10: T  T * F. اصول طراحي کامپايلرها گروه کامپيوتر ايجادگروه اقالم-SLR مثال تجزيه S` S S  L=R \ R L  * R \ id RL I0 S`  .S : I1: S`  S. I R  L.=R 2: R  L. 203 :صفحه I3: S  R. I7 L  *R. : I4 L  *.R : I8 R  L. : I5 L  id. : I9 S  L=R. : I6 S  L=.R : اصول طراحي کامپايلرها گروه کامپيوتر 4-16-2تجزيه -SLRايجاد جدول تجزيه -1ايجاد گروه مجموعه هاي اقالم براي گرامر افزوده ( `Gبا يك نقطه شروع مانند ) `S بصورت= } C = { I0 , I1 ,…In -2ساختن حالت iاز ( Iiمانند ،)I2تعيين actionهاي تجزيه براي حالت iبصورت زير: الف action [i , a] = shift j -در صورت= وجود []A  Q .aK در Iiوgoto (Ii , a )=Ij ب= -قرار گرفتن action [i , a] = reduce A Qبراي تمام پايانه هاي aدر )` Follow (A =Sصورت= وجود [ ].A  Qدر Ii پ -قرار گرفتن action [i , $] =accept صورت وجود [ ].S`  Sدر Ii گروه کامپيوتر اصول طراحي کامپايلرها صفحه204 : 4-16-2تجزيه -SLRايجاد جدول تجزيه - 3ايجاد تغيير حالتهاي gotoبراي حالت iو براي تمام غير پايانه هاي Aبا استفاده از قانون :اگر=Ij ) goto ( Ii , Aآنگاه goto ( I , A ) = j –4گذاردن errorبراي تمام ورودي هاي تعريف نشده با قوانين 2و 3الگوريتم - 5ايجاد حالت اوليه تجزيه كننده با استفاده از مجموعه اقالم حاوي []S`  .S گروه کامپيوتر اصول طراحي کامپايلرها صفحه205 : ايجاد جدول تجزيه-SLR مثال تجزيه E` .E E` E EE+T\T TT*F\T F  (E) \ id 1 مرحله E  .E + T I0 E  .T : T  .T * F no action T  .F F  .(E) action [ 0 , ( ] = shift 4 action [ 0 , id] = shift 5 F  .id I1: E` E. action [ 1, $ ] = accept E  E. + T action [ 1 , + ] = shift 6 206 :صفحه اصول طراحي کامپايلرها 2 مرحله گروه کامپيوتر مثال تجزيه -SLRايجاد جدول تجزيه مرحله 3 )} ) ,+ , $ { = Follow (E ‏action [ 2 , $ ] = action [ 2 , + ]=action [ 2 , ) ] = reduce E T ‏action [ 2 , * ] = shift 7 ‏E  T. ‏T  T. * F ‏I 2: . . . .ادامه مراحل مطابق نمونه ها گروه کامپيوتر اصول طراحي کامپايلرها صفحه207 : 4-17تجزيه -CLRتعريف قلم ]Q.K , a [A شكل عمومي يك قلم كه A  QKيك قانون در گرامر و aيك پايانه يا عالمت انتهاي س=مت راست رشته ورودي (. )$ عملكرد اعالم كاهش با Qدر زمان مشاهده aبه عنوان نماد ورودي بعدي گروه کامپيوتر اصول طراحي کامپايلرها صفحه208 : 4-17تجزيه -CLRپيشوند قابل وقوع ش=رايط قلم معتبر [ ]A  Q.K , aبراي يك پيشوند قابل وقوع y -1وجود اشتقاق S* &AW * &QKWكه: y = &Qو يا aاولين نماد Wيا Wبرابر تهي و aبرابر $ گروه کامپيوتر اصول طراحي کامپايلرها صفحه209 : 4-17تجزيه -CLRايجاد مجموعه اقالم)LR(1 محاسبه closure -1براي هر قلم مثل [ =]A  Q.BK , aدر مجموعه Iانجام بده : براي قانونهاي مانند B  yدر گرامر و هر پايانه مانند bدر): First (K اگر قلم [ ]B  .y , bدر Iنيست آنرا اضافه كن برگشت به مرحله 1 اگر قلمي باقيمانده گروه کامپيوتر اصول طراحي کامپايلرها صفحه210 : 4-17تجزيه -CLRايجاد مجموعه اقالم محاسبه goto Jرا مساوي مجموعه قلمهاي [ ]A  QX.K , aكه در Iموجودند ،در نظر بگير ) closure ( Jرا برگردان. گروه کامپيوتر اصول طراحي کامپايلرها صفحه211 : 4-17تجزيه -CLRايجاد مجموعه اقالم محاسبه )`item (G كن } )} C= { closure ( { S`  .S , $ق=رار د=ه= و ت==كرار : براي هر مجموعه از اقالم Iدر Cو هر نماد گرامر مانند: X اگر ) goto ( I , Xتهي نبوده و در Cنيست انجام بده: برگشت اگر قلمي باقيمانده كن ) goto ( I , Xرا ب==ه Cا=ضاف=ه . گروه کامپيوتر اصول طراحي کامپايلرها صفحه212 : ايجاد مجموعه اقالم-CLR مثال تجزيه S` S S  CC C  cC \d S  C.C , $ I2 S` .S , $ I0 C  .cC , $ I4 C  d. , c \ d C  .d , $ S  .CC , $ C  .cC , c \ d C  .d , c \ d C  c.C , c \ d I5 S  CC. , $ I3 C  .cC , c \ d I1 S`  S. , $ 213 :صفحه C  .d , c \ d اصول طراحي کامپايلرها گروه کامپيوتر مثال تجزيه -CLRايجاد مجموعه اقالم ‏C  c.C , $ ‏C  cC. , $ ‏I9 ‏I6 C  .cC , $ ‏C  .d , $ ‏I7 C  d. , $ خاتمه كار بدليل نتيجه ندادن ساير اقالم. گروه کامپيوتر ‏C  cC. , c \ d اصول طراحي کامپايلرها ‏I8 صفحه214 : مثال تجزيه -CLRايجاد مجموعه اقالم گراف gotoبراي مثال ‏I1 ‏I5 ‏C ‏I2 ‏S ‏I0 ‏C ‏c ‏I9 ‏C ‏I6 ‏d ‏I7 ‏I8 ‏c ‏d ‏c ‏C ‏I3 ‏d ‏I4 گروه کامپيوتر ‏c ‏d اصول طراحي کامپايلرها صفحه215 : 4-17تجزيه -CLRساخت جدول تجزيه -1ساخت گروه مجموعه هاي اقالم به صورت } C = { I0 , I1 , …, Inبراي `G -2ايجاد حالت iاز تجزيه كننده با استفاده از Iو مقداردهي بخش actionبصورت= زير: الف action [ I , a ] = shift j -در صورت وجود [ ]A  Q.aK , bدر Iiوgoto(Ii , a) = Ij ب= reduce A a action [ I , a ] -درصورت وجود []A  Q. , a در Iiو `A = S گروه کامپيوتر اصول طراحي کامپايلرها صفحه216 : 4-17تجزيه -CLRساخت جدول تجزيه پ action [ i , $]= accept -در صورت وجود [ ]$ , .S`  SدرIi goto ( i , a) = j -3اگر goto ( Ii , A ) = Ij -4قرار گرفتن errorبراي تمام ورودي هاي تعريف نشده با قوانين 2و 3الگوريتم قرار دادن حالت اوليه تجزيه كننده مساوي حالت بدست آمده از مجموعه حاوي []$ , S`  .S گروه کامپيوتر اصول طراحي کامپايلرها صفحه217 : مثال تجزيه -CLRساخت جدول تجزيه ‏goto ‏C 2 ‏action ‏S $ 1 ‏d ‏c ‏s4 ‏s3 ‏acc 0 1 5 ‏s7 ‏s6 2 8 ‏s4 ‏s3 3 ‏r3 ‏r3 4 ‏r1 9 1 S` S 2 S  CC 3 C  cC \d 5 ‏s7 ‏s6 ‏r3 6 7 ‏r2 ‏r2 گروه کامپيوتر ‏r2 8 9 اصول طراحي کامپايلرها صفحه218 : 4-18تجزيه -LALRساخت جدول تجزيه -1ايجاد گروه مجموعه هاي اقالم بصورت }C= { I0 , I1 , … In -2پيدا كردن تمام مجموعه هايي با قلم هسته يكسان در بين قلمهاي موجود -3ايجاد مجموعه نتايج اقالم موجود بصورت }C= { J0 , J1 , …Jn و محاسبه action الف action [ I , a ] = shift j -در صورت وجود [ ]A  Q.aK , bدر Iiوgoto(Ii , a) = Ij گروه کامپيوتر اصول طراحي کامپايلرها صفحه219 : 4-18تجزيه -LALRساخت جدول تجزيه ب= reduce A  a action [ I , a ] -درصورت= وجود []A  Q. , a در Iiو `A = S پ action [ i , $]= accept -در صورت وجود [ ]$ , .S`  SدرIi -4ساخت جداول= gotoبصورت= زير: الف اگر Jاجتماع يك يا چند مجموعه اقالم ( ) I0 I1…Ikباشد ،آنگاه قلمهاي هسته )goto ( I1,X), goto (I2,X),…goto (Ik,X .مشابه هستند گروه کامپيوتر اصول طراحي کامپايلرها صفحه220 : 4-18تجزيه -LALRساخت جدول تجزيه ب= اگر Kاجتماع تمام مجموعه اقالم ( ) I0 I1…Ikباشد كه دراي قلمهاي هسته مانند ) goto(I1, Xهستندgoto (J,X)=X ، گروه کامپيوتر اصول طراحي کامپايلرها صفحه221 : مثال تجزيه -LALRساخت جدول تجزيه 1 S` S 2 S  CC 3 C  cC \d ادغام مجموعه هاي اقالم و جايگزين شدن با اجتماعشان ‏I4 , I7 ‏I8 , I9 ‏C  cC. , c \ d \ $ ‏C  d. , c\ d \ $ ‏I3 , I6 ‏C  c.C , c \ d \ $ ‏C  .cC, c \ d \ $ ‏C  .d , c \ d \ $ گروه کامپيوتر اصول طراحي کامپايلرها صفحه222 : مثال تجزيه -LALRساخت جدول تجزيه ‏action ‏goto ‏C ‏S 2 1 $ ‏acc 5 8 9 ‏r3 ‏d ‏c ‏s4 7 ‏s3 6 ‏s4 7 ‏s4 7 ‏r3 ‏s36 ‏s3 6 ‏r3 ‏r1 ‏r2 گروه کامپيوتر 0 1 2 36 47 5 ‏r2 ‏r2 89 اصول طراحي کامپايلرها صفحه223 : مثال پوشش خطا در تجزيه LRو LALR برخورد با خطا در تجزيه LR 0c3c3d4 ورودي داراي خطاي $ccd ‏action ‏goto [ ,4 ‏e =] $ پشته آشكارسازي خطا تشخيص خطا در يك مرحله گروه کامپيوتر اصول طراحي کامپايلرها صفحه224 : مثال پوشش خطا در تجزيه LRو LALR برخورد با خطا در تجزيه LALR 0 c 36 c 36 d 47 ورودي داراي خطاي $ccd ‏action ‏goto [=]$,47 ‏r3 C  d 0 c 36 c 36 C 89 پشته [r=]$,89 2 C .cC 0 c 36 C 89 …. 0C2 آشكارسازي خطا تشخيص خطا پس از چند كاهش گروه کامپيوتر اصول طراحي کامپايلرها صفحه225 : 4-18تجزيه -LALRساخت جدول تجزيه بهينه چند اصالح در الگوريتم س=اخت جدول تجزيه -1نشان دادن مجموعه اي از اقالم Iبا هسته آن -2بدس=ت آوردن بخش تابع actionتنها بوسيله هسته -3نحوه محاسبه تغيير حالتهاي gotoبا استفاده از هسته گروه کامپيوتر اصول طراحي کامپايلرها صفحه226 : 4-18تجزيه -LALRتعيين پيش نگرها -1براي هر قلم مانند B  y.Vدر مجموعه هسته يا Kانجام بده: ‏J` := closure ({[B  y.v , #]})2- -3اگر []A  M.XN , a در `Jنبوده و #=a -4توليد نماد پيش نگر aبراي قلم A  MX.Nدر )goto ( I , X گروه کامپيوتر اصول طراحي کامپايلرها صفحه227 : 4-18تجزيه -LALRتعيين پيش نگرها - 5اگر [ ]# , A  M.XNدر مجموعه `Jنيست ،پيش نگرها از B  y.vدر مجموعه Iبه A  MX.Nدر ) goto ( I , Xانتشار مي يابند. گروه کامپيوتر اصول طراحي کامپايلرها صفحه228 : -LALR 4-18محاسبه هسته هاي گروه اقالم -1ساختن هسته اقالم LRبخش تجزيه )LR -2اجراي الگوريتم تعيين پيش نگر بر روي هسته هر مجموعه از اقالم LRو نماد گرامرX -3تشكيل و مقداردهي جدول معين كننده پيش نگرها كه براي هر قلم هسته در هر مجموعه اقالم -4تكرار چند گذر بر روي هر مجموعه اقالم گروه کامپيوتر اصول طراحي کامپايلرها صفحه229 : -LALR 4-18محاسبه هسته هاي گروه اقالم -5مراجعه به آن دسته اقالم هسته كه iپيش نگرهاي خود را منتشر مي سازد ،هنگام مشاهده هر قلم. -6استفاده از اطالعات ثبت شده توسط مرحله 2و اضافه نمودن مجموعه جاري پيش نگرها براي iبه پيش نگرهايي مرحله قبل ت==كرار م=رح=له 7- 6-4 گروه کامپيوتر اصول طراحي کامپايلرها صفحه230 : مثال -LALRمحاسبه هسته هاي گ=روه اقالم مرحله : 1بدست آوردن اقالم LR ‏L  *R. ‏I7 : ‏R  L. ‏I8 : ‏S  L=R. ‏I9 : ‏I3:S  R. ‏I4 L  *.R : ‏I5 L  id. : ‏I6 S  L=.R : گروه کامپيوتر اصول طراحي کامپايلرها ‏S` S ‏S  L=R \ R ‏L  * R \ id ‏RL ‏I0 S`  .S : ‏I1: S`  S. ‏I R  L.=R 2: ‏R  L. صفحه231 : مثال -LALRمحاسبه هسته هاي گ=روه اقالم مرحله : 2اجراي الگوريتم محاسبه پيش نگرها ‏S .S , # ‏S  .L=R , # ‏S  .R , # = \ L  .*R , # = \ L  .id , # ‏R  .L , # گروه کامپيوتر )}]Closure ( {[S`  .S , # اصول طراحي کامپايلرها صفحه232 : مثال -LALRمحاسبه هسته هاي گ=روه اقالم مرحله : 3انتشار پيش نگرها در بين اقالم هسته از به ‏I0 S`  .S : ‏I1: S`  S. ‏I R  L.=R 2: ‏R  L. ‏I S  R. 3: ‏I4 L  *.R ‏I5: L  id. : ‏I6 S  L=.R : گروه کامپيوتر ‏I R  L.=R 2: اصول طراحي کامپايلرها صفحه233 : مثال -LALRمحاسبه هسته هاي گ=روه اقالم از به ‏I4 L  *.R ‏I5: L  id. : ‏I7 L  *R. : ‏I8 R  L. : ‏I4 L  *.R ‏I5: L  id. ‏I4 L  *.R : ‏I6 S  L=.R : : ‏I8 R  L. : ‏I9 S  L=R. : گروه کامپيوتر اصول طراحي کامپايلرها صفحه234 : مثال -LALRمحاسبه هسته هاي گ=روه اقالم مرحله : 4مقداردهي جدول پيش نگرها و انجام گذرها پيش نگرها ‏PASS1 قلم مجموعه ‏PASS3 ‏PASS2 $ $ $ $ $ $ $ $ $ ‏I2: R $ $ $ $ $ $ ‏I2 : ‏I3: =$ =$ =$ =$ =$ =$ $ $ =$ =$ = =$ =$ = $ گروه کامپيوتر ‏INIT $ = = ‏I0: S`  .S ‏I1: S`  S. ‏ L.=R ‏R  L. ‏S  R. ‏L  *.R ‏L  id. ‏S  L=.R ‏L  *R. ‏R  L. ‏S  L=R. اصول طراحي کامپايلرها ‏I4: ‏I5: ‏I6: ‏I7: ‏I8: ‏I9: صفحه235 : -LALR 4-18فشرده سازي جدول مشابه بودن سطرهاي زيادي از جدول action فشرده سازي جدول action فشرده سازي فيلد actionو ايجاد يك ليست حالت براي آن گروه کامپيوتر اصول طراحي کامپايلرها صفحه236 : فشرده سازي جدول-LALR مثال 1EE+T 2ET 3TT*F 4TF 5 F  (E) 6 F  id action id 0 s5 ( ) $ s4 s6 2 r2 s7 r2 r2 3 r4 r4 r4 r4 s4 r6 r6 r6 6 s5 s4 7 s5 s4 T F 1 2 3 8 2 3 9 3 r6 10 8 s6 9 r1 s7 r1 r1 10 r3 r3 r3 r3 11 r5 r5 r5 r5 اصول طراحي کامپايلرها E acc s5 5 237 :صفحه * 1 4 1 مرحله + goto s11 گروه کامپيوتر مثال -LALRفشرده سازي جدول مرحله 2 مساوي بودن بخش actionبراي حالت هاي 0,4,6,7 تبديل به ليست مشابهي براي حالت 1 تبديل به گروه کامپيوتر عمل نماد ‏s5 ‏Id ( ‏s4 ‏error ‏any عمل نماد + ‏s6 $ ‏acc ‏error ‏any اصول طراحي کامپايلرها صفحه238 : مثال -LALRفشرده سازي جدول مرحله 3 جايگزيني وارده هاي خطا در حالت2 جايگزيني وارده هاي خطاي حالت 3 تبديل به تبديل به عمل نماد * ‏s7 ‏r2 ‏any عمل نماد ‏r4 ‏any مساوي بودن بخش actionبراي حالت هاي 5,10,11و ادغام آنها گروه کامپيوتر اصول طراحي کامپايلرها صفحه239 : مثال -LALRفشرده سازي جدول مرحله 4 جايگزيني وارده هاي حالت 8 جايگزيني وارده هاي حالت 9 تبديل به عمل نماد * ‏s6 ) ‏s11 ‏error ‏any تبديل به عمل نماد * ‏s7 ‏r1 گروه کامپيوتر اصول طراحي کامپايلرها ‏any صفحه240 : 4-19وقوع خطا در تجزيه LR تشخيص خطا تنها با مراجعه به جدول action اعالم خطا به محض نيافتن ادامه مناسب براي ورودي در حال پويش عدم كاهش دنباله روي پشته عدم ورود نماد ايجاد كننده خطا به پشته گروه کامپيوتر اصول طراحي کامپايلرها صفحه241 : 4-20پويش خطا در تجزيه LR روش panic mode -1پويش پشته به پايين تا يافتن حالت sبا gotoبا پايانه خاص A -2صرف نظر از يك يا چند نماد ورودي تا يافتن نماد دقيقا مناسب براي A -3انتقال حالت ] goto [s , Aبه پشته و ادامه تجزيه گروه کامپيوتر اصول طراحي کامپايلرها صفحه242 : 4-20پويش خطا در تجزيه LR روش Phrase level -1آزمايش هر وارده خطا در جدول تجزيه ت==صميم گ==يريدر م=رورد م=نشاء ب==روز خ=طا 2- ا=يجاد رو=يه پ==وش=شيم=ناس=بب==را=يخ=طا 3- گروه کامپيوتر اصول طراحي کامپايلرها صفحه243 : 4-21توليد كننده تجزيه كننده Yacc - روش ايجاد مترجم توسط Yacc -1آماده شدن پرونده اي حاوي مشخصه مترجم براي Yacc -2تبديل محتواي پرونده به برنامه در زبان C -3كامپايل برنامه توليدي همراه كتابخانه برنامه تجزيهLR =ي ب==رنام=ه ت==جزيه كننده= 4- خ=رو=ج : گروه کامپيوتر ‏y.tab.c ‏a.out خروجي (تجزيه كننده) كامپايلر Yacc كامپايلر C ‏a.out اصول طراحي کامپايلرها مشخصه transla: ‏te.y ‏y.tab.c ورودي صفحه244 : Yacc - 4-21-1اجزاي برنامه اعالن ها بخش هاي برنامه مبدا Yacc قوانين ترجمه روالهاي حاميc اعالن ها ترتيب در متن برنامه مبدا Yacc %% قوانين ترجمه %% روالهاي حاميc گروه کامپيوتر اصول طراحي کامپايلرها صفحه245 : Yacc - 4-21-1اعالن اعالن هاي معمول در cو محصور بين {% , }%اعالن لغات موقت بخش اعالن برنامه اعالن نشانه هاي گرامر گروه کامپيوتر اصول طراحي کامپايلرها صفحه246 : Yacc - 4-21-2قوانين ترجمه بخش قوانين ترجمه بالفاصله پس از %% مولد يا قانون عمل معنايي س==متچ=پ> < :ا=ن=تخاب{ > 1ع=ملم=عنايي< }1 ا=ن=تخاب{ > 2ع=ملم=عنايي: <} 2 ا=ن=تخاب{ > 3ع=ملم=عنايي: <} 3 . . . گروه کامپيوتر اصول طراحي کامپايلرها صفحه247 :

62,000 تومان