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