صفحه 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
ZB/C
گروه کامپيوتر
اصول طراحي کامپايلرها
صفحه50 :
مثالفاكتورگيري چپ
S iEtSZ /a
S iEtS
S iEtSeS / a
Eb
Z eS
Eb
S iEtS / iEtSes
S a
Eb
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-
ر=س=م ي==كم=سير از ح=ا=لتش==رو=ع ب==ه ن==ه=اييب==را=يهر ق=انونب==ه ش==كلAX1, 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
Sa
2
F eS
3
FS
4
Eb
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
Ab
َA Abc
دستگيره ها
Bd
گروه کامپيوتر
اصول طراحي کامپايلرها
صفحه146 :
مثال دستگيره
(1) E E + E
(2) E E * E
گرامر
) (3) E ( E
(4) E id
مرحله 1
EE+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
EE*E
E*E
E+E*E
EE+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
EE+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 مثال تجزيه
1EE+T
2ET
3TT*F
4TF
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
EE+T\T
TT*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
EE+T\T
TT*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
EE+T\T
TT*F\T
F (E) \ id
EE+.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
EE+T\T
TT*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 مثال تجزيه
EE
+ .T
I6
T .T * F
:
T .F
F (E.)
I8
: E E. + T
E` E
EE+T\T
TT*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
RL
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
EE+T\T
TT*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
RL
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 مثال
1EE+T
2ET
3TT*F
4TF
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 :