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

247
ر ل ي ا پ م کا ي ح را ط ول ص ا ر ل ي ا پ م کا ي ح را ط ول ص ا ي ن ورا ن مه ط ا ده ف پ س ده: پ# ن ک ه ي ه( ت ر( ت و ي- ن م روه: کا گ

Upload: lise

Post on 20-Jan-2016

91 views

Category:

Documents


4 download

DESCRIPTION

اصول طراحي کامپايلر. دانشگاه پيام نور. تهيه کننده: سيده فاطمه نوراني گروه: کامپيوتر. شناسنامه منبع. عنوان منبع: کامپايلرها مترجم: دلداري انتشارات: باغاني (خراسان) منبع اصلي: Compilers: Principles, Techniques, and Tools. جايگاه درس در رشته کامپيوتر. ضرورت اين درس: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: اصول طراحي کامپايلر

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

تهيه کننده: سيده فاطمه نورانيگروه: کامپيوتر

Page 2: اصول طراحي کامپايلر

2صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

شناسنامه منبعشناسنامه منبع

کامپايلرهاعنوان منبع: دلداريمترجم:

باغاني )خراسان(انتشارات:منبع اصلي:

Compilers:Principles, Techniques, and Tools

Page 3: اصول طراحي کامپايلر

3صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

جايگاه درس در رشته کامپيوترجايگاه درس در رشته کامپيوتر

:ضرورت اين درسضرورت نياز به زبانهای سطح باال ضرورت ترجمه برنامه های نوشته شده با زبان سطح باال به

برنامه به زبان ماشينتنوع زبانهای برنامه نويسی سطح باال

:نظريه زبانها و ماشين، طراحی و پياده دروس پيش نيازسازی زبانها

:اجبارينوع درس:30تعدادکل ساعات تدريس:10تعداد جلسات تدريس

Page 4: اصول طراحي کامپايلر

4صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فصل اول: مقدمه اي فصل اول: مقدمه اي بر کامپايلربر کامپايلر

اهداف رفتاري:دانشجو پس از مطالعه اين فصل با مفاهيم زير

آشنا خواهد شد:

برنامه هاي تحليل کننده آشنايي با بخش تحليل و بخش سنتز

کامپايلرابزارهای ساخت کامپايلر

Page 5: اصول طراحي کامپايلر

5صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

نمونه اي از برنامه هاي تحليل نمونه اي از برنامه هاي تحليل 1-11-1کنندهکننده

ويرايشگرهاي ساختار چاپگرهايpretty printerبررسي کننده هاي ايستامفسرهاشکل دهنده هاي متنکامپايلرهاي سيليسيوميمفسرهاي پرس و جو

Page 6: اصول طراحي کامپايلر

6صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعريف كامپايلر تعريف كامپايلر1-21-2

- ترجمه برنامه از زبان مبدا به برنامه معادل دز زبان مياني مانند اسمبلي1

- گزارش وجود خطاها را در برنامه مبدا 2به كاربر.

کامپايلر«تحليل+ سنتز»

برنامه مبدأ

پيغام خطا

برنامه مقصد

Page 7: اصول طراحي کامپايلر

7صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

طبقه بندي كامپايلرها طبقه بندي كامپايلرها1-31-3

دسته بندي كامپايلرها بر اساس چگونگي ساخت و عمليات:

تك گذره

چند گذره

-Load-and اشكال زدا و go

بهينه ساز

Page 8: اصول طراحي کامپايلر

8صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

عمليات كامپايلر عمليات كامپايلر1-41-4

تجزيه برنامه مبدا به اجزاي تشكيل دهنده اشبخش تحليلبخش تحليل

توليد كد مياني از برنامه مبدا

تبديل كد مياني به برنامه مقصد بخش سنتزبخش سنتز نياز به بيشترين روشهاي در زبان ديگر

خاص

Page 9: اصول طراحي کامپايلر

9صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

سيستم پردازش زبان سيستم پردازش زبان1-51-5

اجزاي سيستم

پيش پردازشگر

كامپايلر

اسمبلر

باركننده و ويرايشگر الحاق

Page 10: اصول طراحي کامپايلر

10صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

پيش پردازشگرپيش پردازشگر1-5-11-5-1

جمع آوري ماژولهاي برنامه مبدا موجود درفايلهاي جداگانه

بديل بخشهاي خالصه شده بنام درشت تدستورات به احكام

زبان مبدا

Page 11: اصول طراحي کامپايلر

11صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ارتباطات در سيستم پردازش ارتباطات در سيستم پردازش 1-5-21-5-2زبانزبان

پيش پردازشگرپيش پردازشگر

باركننده / ويرايشگر الحاقباركننده / ويرايشگر الحاق

كامپايلركامپايلر

اسمبلراسمبلر

اسكلت برنامه

مبدا برنامه مبدا

برنامه اسمبلي مقصد

كد ماشين جابجاپذير

كد ماشين

كتابخانه فايل هاي

مقصد جابجاپذير

Page 12: اصول طراحي کامپايلر

12صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

سه فاز تحليل در عمل سه فاز تحليل در عمل 1-61-6کامپايلکامپايل

تشخيص نشانه ها )تحليل لغوي يا تحليل خطي

پويش(

گروه بندي نشانه هاي برنامه مبدا به جمالت

گرامري

تحليل سلسله

)تحليل نحوي يا تجزيه(مراتبي

بررسي خطاهاي معنايي برنامه تحليل معنايي

Page 13: اصول طراحي کامپايلر

13صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل 1-7

- تحليل 1لغوي

- تحليل 2نحوي

- تحليل 3- توليد كد 4معناييمياني

- بهينه 5سازي كد

- توليد كد 6نهايي

جلوبندي) گروه فازهاي متوالي وابسته به زبان مبدا(جلوبندي) گروه فازهاي متوالي وابسته به زبان مبدا(

عقب بندي) گروه فازهاي متولي وابسته به زبان مقصد(عقب بندي) گروه فازهاي متولي وابسته به زبان مقصد(

Page 14: اصول طراحي کامپايلر

14صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تحليل گر لغويتحليل گر لغوي

تحليل گر نحويتحليل گر نحوي

تحليل گر معناييتحليل گر معنايي

توليد كننده كد ميانيتوليد كننده كد مياني

بهينه ساز كدبهينه ساز كد

توليدكننده كد نهاييتوليدكننده كد نهايي

اداره كننده خطااداره كننده خطامدير جدول نمادمدير جدول نماد

نمودار مراحل 1-7-1كامپايل

Page 15: اصول طراحي کامپايلر

15صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل کامپايلر- تحليل گر مراحل کامپايلر- تحليل گر 1-7-21-7-2لغويلغوي

مرور متن برنامه به صورت حرف به حرف مرور متن برنامه به صورت حرف به حرف

تبديل آنها به نشانه ها ) كلمات كليدي، عملگر، جداكننده، ثوابت و شناسه(

تبديل آنها به نشانه ها ) كلمات كليدي، عملگر، جداكننده، ثوابت و شناسه(

Page 16: اصول طراحي کامپايلر

16صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل- تحليل گر مراحل كامپايل- تحليل گر 1-7-21-7-2 نحوينحوي

بررسي خروجي تحليل لغويبررسي خروجي تحليل لغوي

ساخت درخت تجزيه از نشانه هاساخت درخت تجزيه از نشانه ها

Page 17: اصول طراحي کامپايلر

17صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل - تحليل گر مراحل كامپايل - تحليل گر 1-7-21-7-2 معناييمعنايي

بررسي برنامه مبدا براي يافتن خطاهاي معناييبررسي برنامه مبدا براي يافتن خطاهاي معنايي

جمع آوري اطالعات مربوط به نوع داده هاجمع آوري اطالعات مربوط به نوع داده ها

Page 18: اصول طراحي کامپايلر

18صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل - توليد كد مياني مراحل كامپايل - توليد كد مياني1-7-21-7-2

خواندن برنامه وروديخواندن برنامه ورودي

تبديل به برنامه اي در زبان مياني مانند اسمبليتبديل به برنامه اي در زبان مياني مانند اسمبلي

Page 19: اصول طراحي کامپايلر

19صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل - بهينه ساز مراحل كامپايل - بهينه ساز 1-7-21-7-2كدكد

بهينه كردن كد مياني ) حذف متغيرهاي مياني غير ضروري(بهينه كردن كد مياني ) حذف متغيرهاي مياني غير ضروري(

سرعت بخشيدن به توليد كد نهاييسرعت بخشيدن به توليد كد نهايي

Page 20: اصول طراحي کامپايلر

20صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل - توليد مراحل كامپايل - توليد 1-7-21-7-2كننده كد نهاييكننده كد نهايي

تبديل كد مياني بهينه به كد جابجاپذير يا اسمبليتبديل كد مياني بهينه به كد جابجاپذير يا اسمبلي

تعيين مكانهاي حافظه براي متغيرهاي برنامهتعيين مكانهاي حافظه براي متغيرهاي برنامه

انتساب متغيرها به ثبات هاي ماشينانتساب متغيرها به ثبات هاي ماشين

Page 21: اصول طراحي کامپايلر

21صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مراحل كامپايل - مديريت مراحل كامپايل - مديريت 1-7-21-7-2جدول نمادجدول نماد

تعريف

ساختمان داده اي شامل ركورد براي شناسه و ميدانهايي براي أن صفات

هدف

فراهم كردن شناسايي سريع ركورد شناسه بمنظور

ذخيره و بازيابي داده هايش

فراهم كردن شناسايي سريع ركورد شناسه بمنظور

ذخيره و بازيابي داده هايش

Page 22: اصول طراحي کامپايلر

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

Page 23: اصول طراحي کامپايلر

23صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ابزارهاي ساخت كامپايلر ابزارهاي ساخت كامپايلر1-81-8

مولدهاي تجزيه كننده

توليد كننده هاي پويشگر

موتورهاي ترجمه نحوگرا

مولدهاي كد خودكار

موتورهاي جريان داده

Page 24: اصول طراحي کامپايلر

24صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

نحو زبان و فصل دوم :فصل دوم :تجزيه

اهداف رفتاري:دانشجو پس از مطالعه اين فصل با مفاهيم زير

آشنا خواهد شد:

گرامر اشتقاق و تجزيهتعريف نحوگرادرخت نحوی تجزيه باال به پايين و پايين به باال ترجمه

Page 25: اصول طراحي کامپايلر

25صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

گرامر گرامر2-12-1

وسيله تشخيص عضويت يك رشته در زبانوسيله تشخيص عضويت يك رشته در زبان

گرامر: روش ساخت رشته هايي متشكل از نمادهاگرامر: روش ساخت رشته هايي متشكل از نمادها

مشخص كننده ساختار يك زبانمشخص كننده ساختار يك زبان

تعريف

کاربرد

Page 26: اصول طراحي کامپايلر

26صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعريف رياضي گرامر تعريف رياضي گرامر2-22-2

G = {N, T, S, P} گانه4گرامر

N=مجموعه غير پايانه ها = Tمجموعه پايانه ها S =عضو شروع P = مجموعه قوانين توليد رشته هاي

زبان

Page 27: اصول طراحي کامپايلر

27صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال از يك گرامرمثال از يك گرامر

N = { E, F }

T = { +, * , / ,id }

S = E

P = { E F * id , F F / E , F F + F }

رشته توليدي نمونه

id * id+ id

Page 28: اصول طراحي کامپايلر

28صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

اشتقاق اشتقاق2-32-3

فرآيند توليد رشته از گرامر با شروع از عنصر ابتداي گرامر و استفاده از قوانين.

انواع اشتقاق

از چپ: در هر قدم انجام جايگزيني روي سمت چپ

ترين غيرپايانه

در هر قدم انجام از راست:جايگزيني روي سمت راست

ترين غيرپايانه

Page 29: اصول طراحي کامپايلر

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

Page 30: اصول طراحي کامپايلر

30صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

درخت تجزيه درخت تجزيه2-3-12-3-1

درخت تجزيه نشان دهنده چگونگي اشتقاق رشته اي از زبان از نماد شروع گرامر

ساخت درخت تجزيه

قانون A = A XYZ گره اي در درخت و XYZ فرزندان آن قانون A = AXYZ گره اي در درخت و XYZ فرزندان آن

قانون A = A Xa گره اي در درخت و X ,a فرزندان آنقانون A = AXa گره اي در درخت و X ,a فرزندان آن

.پايانه ها ) حروف كوچك( تنها در برگها ديده مي شوند.پايانه ها ) حروف كوچك( تنها در برگها ديده مي شوند

-S ريشه درخت -S ريشه درخت

Page 31: اصول طراحي کامپايلر

31صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

درخت اشتقاق درخت اشتقاق2-3-22-3-2

درخت تجزيه اي نشان دهنده مراحل اشتقاق بكار رفته )راست يا چپ(

مثالE

E E

E

id

id

id

+

*E

id + id * id

Page 32: اصول طراحي کامپايلر

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

Page 33: اصول طراحي کامپايلر

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+ -

Page 34: اصول طراحي کامپايلر

34صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعريف نحو گرا تعريف نحو گرا2-62-6

كاربرد براي ترجمه ساختارهاي زبان. كاربرد براي ترجمه ساختارهاي زبان.

ترجمه ساختار را بر حسب صفات مربوط به مولفه هاي نحوي

تعيين نوع ساختار، مكان اولين دستور توليد شده در برنامه هدف يا تعداد دستورات

براي كامپايلر

Page 35: اصول طراحي کامپايلر

35صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعريف نحوي جهت 2-6-1دار

گرامر و مجموعه اي از قواعد معنايي وابسته به آنگرامر و مجموعه اي از قواعد معنايي وابسته به آن

هر نماد در گرامر مجموعه اي از صفات دارد.1.

در هر مولد يا قانون گرامر مجموعه اي از قواعد 2. معنايي براي محاسبه مقادير صفات نمادها وجود دارد.

صفات و محاسبه

آنها

Page 36: اصول طراحي کامپايلر

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 با قانون گرامري استفاده شده درگره

Page 37: اصول طراحي کامپايلر

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,

تعريف نحوگرا براي ترجمه عبارات ميانوندي به عبارت معادل پسوندي

Page 38: اصول طراحي کامپايلر

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 +

Page 39: اصول طراحي کامپايلر

39صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

انواع درخت نحوي انواع درخت نحوي2-7-22-7-2

هر گره نماينده يك عملگر و فرزندان آن عملوند آنهر گره نماينده يك عملگر و فرزندان آن عملوند آن

.درخت تجزيه اي كه عملگرها خود فرزند محسوب مي شوند.درخت تجزيه اي كه عملگرها خود فرزند محسوب مي شوند

درخت نحو مجرد

درخت نحو واقعي

Page 40: اصول طراحي کامپايلر

40صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

الگوي ترجمه الگوي ترجمه2-82-8

گرامر مستقل از متني كه قطعه برنامه هايي كه عمليات معنايي

.ناميده مي شوند در سمت راست قوانين آن اضافه شده اند

گرامر مستقل از متني كه قطعه برنامه هايي كه عمليات معنايي

.ناميده مي شوند در سمت راست قوانين آن اضافه شده اند

تفاوت با ترجمه نحوگرا

.نمايش ترتيب ارزشيابي قوانين بطور صريح.نمايش ترتيب ارزشيابي قوانين بطور صريح

Page 41: اصول طراحي کامپايلر

41صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

درخت توليد شده براي درخت توليد شده براي 2-8-12-8-1الگوي ترجمهالگوي ترجمه

expr

term+

expr1

{print ( ,+, ) }

يك برگ اضافي ساخته شده براي عمل معني

ساختن فرزند اضافي براي درخت -1

متصل نمودن اين فرزند به گره مربوط -2به قانون خود در گرامر

طريقه ساخت درخت

Page 42: اصول طراحي کامپايلر

42صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه ) پارسينگ( تجزيه ) پارسينگ(2-92-9

تجزيه به كمك تحليلگر نحوي و به نام تحليل *.نحوي انجام مي گيرد

در تجزيه تعلق رشته ورودي به زبان مبدا *.بررسي مي شود

بررسي طبق ساختار و نحو دستورات زبان *.مبدا انجام مي گيرد

Page 43: اصول طراحي کامپايلر

43صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه- دسته بندي روشها تجزيه- دسته بندي روشها2-9-12-9-1

روش باال به پايين :ساخته شدن درخت تجزيه از

LL(1)باال به پايين. مانند

روش باال به پايين :ساخته شدن درخت تجزيه از

LL(1)باال به پايين. مانند

:روش پايين به باالساخته شدن درخت تجزيه از پايين

مانند تجزيه به باال اولويت و0عملگر

LR

:روش پايين به باالساخته شدن درخت تجزيه از پايين

مانند تجزيه به باال اولويت و0عملگر

LR

Page 44: اصول طراحي کامپايلر

44صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده باال به پايين تجزيه كننده باال به پايين2-9-1-12-9-1-1

آغاز تجزيه از عنصر شروع گرامرآغاز تجزيه از عنصر شروع گرامر

جايگزيني قانون يك غير پايانهجايگزيني قانون يك غير پايانه

قانون كاربرد دارد؟قانون كاربرد دارد؟

عقبگرد به قانون هم سطح ديگرعقبگرد به قانون هم سطح ديگر برو به قانون سطح بعد برو به قانون سطح بعد

بلي

خير

Page 45: اصول طراحي کامپايلر

45صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال از تجزيه باال به پايينمثال از تجزيه باال به پايين

S bBeB cf/ ce/c

تجزيه:

b

SSSS

BB

BB

bb

be

e

ee e

cc

f

Back tracking Back tracking

c

b

Page 46: اصول طراحي کامپايلر

46صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه باال به پايين پيش تجزيه باال به پايين پيش 2-9-1-22-9-1-2گويانهگويانه

نماد پيش نگرنماد پيش نگر

قxوانين در كxه اسxت هxايي پايانxه تمxام مجموعxه مربوط به غير پايانه در سمت چپ قرار مي گيرند

از هxر نگxر در مxورد اسxتفاده نمxاد پيش بxه نگxاه با قانون درتصميم گيري

روش تجزيه باال به پايين بدون ويژگي عقبگردروش تجزيه باال به پايين بدون ويژگي عقبگرد

Page 47: اصول طراحي کامپايلر

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 }

Page 48: اصول طراحي کامپايلر

48صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

بازگشتي چپ بازگشتي چپ2-102-10

ظاهر شدن غير پايانه سمت چپ در سمت راست قانون بعنوان اولين عنصر

ذف بازگشتي چپ پيش از تجزيهح

A Aa / Ab / Ac / x / yA xZ / yZ

Z aZ / bZ / cZ

Page 49: اصول طراحي کامپايلر

49صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

حذف بازگشتي چپمثالمثال

S Aa / b

A Ac / Sd

A Ac / Aad / bd

S Aa / b

S Aa / b

A bdZ

Z cZ / adZ

Page 50: اصول طراحي کامپايلر

50صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فاكتور چپ فاكتور چپ2-112-11

يكسان بودن عنصر سمت چپ در حداقل دو قانون گرامر

فاكتورگيري چپ

A aB / aC A aZ

Z B / C

فاكتورگيري

a از

Page 51: اصول طراحي کامپايلر

51صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فاكتورگيري چپمثالمثال

S iEtS / iEtSes

S a

E b

S iEtSZ /a

Z eS

E b

S iEtSS iEtSeS / aE b

Page 52: اصول طراحي کامپايلر

52صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تحليل لغوي تحليل لغوي2-122-12

- دريافت يك رشته كاراكتري از ورودي- استخراج نشانه ها از آن

- تحويل نشانه ها به تجزيه كننده- ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا

- دريافت يك رشته كاراكتري از ورودي- استخراج نشانه ها از آن

- تحويل نشانه ها به تجزيه كننده- ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا

حذف فضاهاي خالي بين عبارات و توضيحات برنامه -تشخيص شناسه ها و كلمات كليدي زبان-

حذف فضاهاي خالي بين عبارات و توضيحات برنامه -تشخيص شناسه ها و كلمات كليدي زبان -

Page 53: اصول طراحي کامپايلر

53صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال

تحليل لغوي عبارت دستوري

Count = count + increment

تحليل گر لغوي

id = id + id تجزيه كننده

Count = count + incrementCount = count + increment

id = id + idid = id + id

Page 54: اصول طراحي کامپايلر

54صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

رابط تحليلگر لغوي رابط تحليلگر لغوي2-12-12-12-1

وروديورودي

تحليل گر لغويتحليل گر لغوي

برگرداندن كاراكترخواندن كاراكتر

سال ار

د وولي

ت

ت فا

و صانه

نش

آن

تحليل گر نحوي)تجزيه كننده( تحليل گر نحوي(تجزيه كننده )

ميانگيرميانگيرمصرف نشانه

ها براي تعيين ساختار

دستورات

در هر زمان حاوي يك بلوك از -1كاراكترها

اشاره گري به مكان نشانه بعدي -2پردازش نشده

ميانگير

Page 55: اصول طراحي کامپايلر

55صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تشكيل جدول نماد تشكيل جدول نماد2-132-13

جدولي ساخته شونده توسط. فازهاي تحليل، مورد استفاده فازهاي توليد كد

فاز تحليل لغويفاز تحليل لغوي

فاز تحليل نحويفاز تحليل نحوي

فاز توليد كدفاز توليد كد

ذخيره رشته كاراكتري تشكيل دهنده .شناسه در جدول

نوع شناسه، مورد اضافه كردناستفاده)رويه، متغير و..(

درج مكان شناسه در حافظه در جدول

فاز تحليل معناييفاز تحليل معنايي

استفاده از اطالعات جدول براي دسترسي به متغير و توليد كد

Page 56: اصول طراحي کامپايلر

56صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

جدول نماد- روالها جدول نماد- روالها2-13-12-13-1

Insert ( s , t) :Lookup ( s ) :

انديس وارده جديد مربوط را بر t نشانه sبه رشته

مي گرداند.

در جدول است، sاگر انديس آن بر مي گردد

اگر نه، صفر بر مي گردد

تعيين وجود شناسه در جدول Lookupعمل نماد

در صورت عدم وجود شناسه ، Insertعمل درج آن در جدول

Page 57: اصول طراحي کامپايلر

57صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

جدول نماد- پياده سازي جدول نماد- پياده سازي 2-13-22-13-2

اشاره گر نشانه: tokenصفات : attributes: ptr كلمات دستوري

در متن برنامه

mod

div

d i v m o d a

دنباله كاراكترهاي ورودي

div

mod

id

Page 58: اصول طراحي کامپايلر

58صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ماشين پشته انتزاعي ماشين پشته انتزاعي2-142-14

ماشين پشته انتزاعي: شكل مرسوم نمايش مياني توليد كد

حافظه دستورات -1اجزاي ماشيناجزاي ماشين

حافظه داده ها -2

محاسبات ماشينمحاسبات ماشينمحاسبات صحيح -1

دستورات دستكاري -2پشته

روند كنترل -3

Page 59: اصول طراحي کامپايلر

59صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

دستورات محاسباتي دستورات محاسباتي2-14-12-14-1

، قابليت پياده سازي مستقيم عملهاي پايه مانند جمع پياده سازي. عمليات پيچيده تر با دنباله اي از تفريق و ... در ماشين انتزاعي

استفاده از نمايش پسوندي در كد ماشين براي دستورات اوليه ماشين استفاده از پشته در حين ارزيابي عباراتارزيابي يك عبارت محسباتي

ارزشيابي عبارت در ماشين

بيرون پراندن عملوندها از پشتهبيرون پراندن عملوندها از پشته

انجام عملگر بر روي مقدار پشتهانجام عملگر بر روي مقدار پشته

قرار دادن نتيجه بر روي پشتهقرار دادن نتيجه بر روي پشته

Page 60: اصول طراحي کامپايلر

60صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال ارزيابي عبارت محاسباتي با مثال ارزيابي عبارت محاسباتي با پشتهپشته

عبارت محاسباتي *5 + 13

را روي پشته قرار ده1- عدد 1

را روي پشته قرار ده2- عدد 2

- دوتا از باالترين عناصر پشته را با هم جمع و آن دو را از پشته بيرون ده3

را روي پشته قرار ده4- نتيجه يعني عدد 4

را روي پشته قرار ده5- عدد 5

- دوتxا بxاالترين عناصxر پشxته را در هم ضxرب و 6 را روي پشته قرار ده20- نتيجه يعني عدد 7آنها را بيرون ده

Page 61: اصول طراحي کامپايلر

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

Page 62: اصول طراحي کامپايلر

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

+

:=

Page 63: اصول طراحي کامپايلر

63صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

كنترل جريان در ماشين كنترل جريان در ماشين2-14-32-14-3

تعيين مكان پرشتعيين مكان پرش

تعيين محل پرش با عملوند دستور -1

تعيين فاصله نسبي براي پرش مثبت يا -2منفي با عملوند دستور

تعيين محل پرش با نماد هاي دستور -3

امكان برداشتن عملونداز باالي پشته

امكان برداشتن عملونداز باالي پشته

Page 64: اصول طراحي کامپايلر

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 توقف اجرا

Page 65: اصول طراحي کامپايلر

65صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فصل سوم: تحليلگر لغويفصل سوم: تحليلگر لغوي

اهداف رفتاري:دانشجو پس از مطالعه اين فصل با مفاهيم زير

آشنا خواهد شد:

آشنايي با تحليلگر لغوی عبارات و گرامر باقاعده تحليلگر لغویLex ماشين خودکار قطعی و غير قطعی و

تبديل آنها به يکدگر

Page 66: اصول طراحي کامپايلر

66صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

وظايف تحليل گر لغوي وظايف تحليل گر لغوي3-13-1

- خواندن نمادهاي ورودي1

توليد دنباله اي از نشانه ها -2

- ثبت نشانه ها در جدول نمادها3

- حذف توضيحات برنامه، جاي خالي و كاراكتر مربوط به سطر جديد4

- ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا5

Page 67: اصول طراحي کامپايلر

67صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ارتباط با تجزيه كننده ارتباط با تجزيه كننده3-23-2

تحليل گر لغويتحليل گر لغويتحليل گر نحوي )تجزيه كننده(تحليل گر نحوي )تجزيه كننده(

جدول نمادجدول نماد

ارتباط تحليل گر لغوي با تجزيه كننده

نشانه بعدي را بده

نشانه

برنامه مبدا

Page 68: اصول طراحي کامپايلر

68صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

داليل جدايي فازهاي تحليل داليل جدايي فازهاي تحليل 3-2-13-2-1لغوي و تجزيهلغوي و تجزيه

ساده تر بودن طراحي دو فاز -1ساده تر بودن طراحي دو فاز -1

قابليت حمل كامپايلر و محدود شدن تغييرات به -3تحليلگر لغوي

قابليت حمل كامپايلر و محدود شدن تغييرات به -3تحليلگر لغوي

افزايش كارايي كامپايلر به دليل استفاده از -2ميانگير بين دو فاز

افزايش كارايي كامپايلر به دليل استفاده از -2ميانگير بين دو فاز

Page 69: اصول طراحي کامپايلر

69صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

خطاي مرحله تحليل لغوي خطاي مرحله تحليل لغوي3-33-3

منطبق نبودن هيچ كدام از الگوهاي مربوط به تشخيص نشانه هادر زبان مبدا با پيشوندي از ورودي

روشهاي پوشش خطا

Panic Mode 1-حذف كاراكتر اضافي -2

درج كاراكتر از قلم افتاده -3جايگزيني يك كاراكتر بجاي كاراكتر غلط -4

جابجا نمودن دو كاراكتر مجاور هم -5

Page 70: اصول طراحي کامپايلر

70صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

Panic modePanic mode پوشش خطا- پوشش خطا- 3-3-13-3-1

ساده ترين شيوه پوشش خطا

دهxباقيمان از متxوالي كاراكترهxاي حxذف ورودي تا پيدا شدن نشانه

قابل قبول توسط تحليل گر لغوي

باتيxمحاس يxك سيسxتم بxراي بxودن كxافي محاوره اي

Page 71: اصول طراحي کامپايلر

71صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

پياده سازي پياده سازي–– تحليلگر لغوي تحليلگر لغوي 3-43-4

روشهاي پياده سازي

Lexاستفاده از توليد كننده تحليلگر لغوي مانند كامپايلر Lexاستفاده از توليد كننده تحليلگر لغوي مانند كامپايلر

نوشتن تحليلگر لغوي به زبانهاي متداول برنامه نويسي I/Oسيستم و خواندن رشته ورودي با تسهيالت

نوشتن تحليلگر لغوي به زبانهاي متداول برنامه نويسيI/O سيستم و خواندن رشته ورودي با تسهيالت

نوشتن تحليلگر لغوي به اسمبلي و مديريتصريح خواندن رشته ورودي

نوشتن تحليلگر لغوي به اسمبلي و مديريتصريح خواندن رشته ورودي

Page 72: اصول طراحي کامپايلر

72صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

عبارات با قاعده عبارات با قاعده3-53-5

قواعد تعريف

{ )مجموعه حاوي رشته زبان }- عبارت باقاعده 1

تهي( را مشخص مي نمايد.

2 -{a} عبارت باقاعده اي است که زبان a نمادي از(

Σ.را مي سازد )

عبارات باقاعده باشند، اجتماع، الحاق و b و a- اگر 3

Kelin Star.آنها هم باقاعده است

Page 73: اصول طراحي کامپايلر

73صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال عبارات باقاعدهمثال عبارات باقاعده

{aa, ab,ba,bb} مجموعه (aUb( )aUb)- از عبارت باقاعده 2 توليد مي شود.

را a كليه رشته هايي با صفر يا چند *a- عبارت باقاعده 3توليد مي كند.

رشته هايي با صفر يا چند نماد از ( *aUb)- عبارت باقاعده 4b يا a .را توليد مي كند

باشد آنگاه:={a,b}اگر

ساخته مي شود. {a , b} مجموعه aUb - از عبارت باقاعده1

Page 74: اصول طراحي کامپايلر

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*

Page 75: اصول طراحي کامپايلر

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

Page 76: اصول طراحي کامپايلر

76صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مجموعه هاي بي قاعده مجموعه هاي بي قاعده3-63-6

ساختارهاي موازنه اي و النه -1اي

رشته هاي -2تكراري

رشته هايي براي -3مقايسه دو چيز

Page 77: اصول طراحي کامپايلر

77صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

گرامر با قاعده گرامر با قاعده3-73-7

فرم قوانين گرامر باقاعده

A → a

A → λ

A → aB

a عنصري از الفبا و پايانه

B و Aغير پايانه

Page 78: اصول طراحي کامپايلر

78صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال چند گرامر با قاعدهمثال چند گرامر با قاعده

;G: S abSA

A Aa ال

ف

G: S aSb/abب

پG: S bS/cS/aB

B aB/cS /bC

C aB / bS

Page 79: اصول طراحي کامپايلر

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ورودي

Page 80: اصول طراحي کامپايلر

80صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

3-8-13-8-1 - - LexLexاجزاي برنامهاجزاي برنامه

اعالن ها

قواعد ترجمه

cرويه هاي كمكي

LexLexبخش هاي برنامه مبدا

LexLexترتيب در متن برنامه مبدا

اعالن ها

قواعد ترجمه

cرويه هاي كمكي%%

%%

Page 81: اصول طراحي کامپايلر

81صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

توليدكننده تحليلگر لغوي توليدكننده تحليلگر لغوي3-83-8

بخش اعالن برنامهبخش اعالن برنامه

اعالن متغيرها

اعالن ثوابت صريح

تعاريف باقاعده )اجزاي عبارات باقاعده مورد

استفاده در قواعد ترجمه(

Page 82: اصول طراحي کامپايلر

82صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

%%بخش قوانين ترجمه بالفاصله پس از

عمل مناسبعبارت باقاعدهP1 : { 1عمل معنايي }

P2 : { 2عمل معنايي }

: { 3عمل معنايي }

.

.

.

3-8-13-8-1 - - LexLexاجزاي برنامهاجزاي برنامه

C رويه هاي كمكي C رويه هاي كمكي مورد استفاده

دراجراي اعمال

Page 83: اصول طراحي کامپايلر

83صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ماشين خودكار متناهي ماشين خودكار متناهي3-93-9

ابزاري براي تشخيص ساختارهاي موجود زبان پذيرفتن يا ودر دنباله ورودي از نشانه ها

نپذيرفتن دنباله كاراكترهاي ورودي

انواع ماشين هاي خودكار - ماشين خودكار متناهي قطعي1

DFA

- ماشين خودكار متناهي غير 2 NFAقطعي

Page 84: اصول طراحي کامپايلر

84صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ماشين خودكار قطعي ماشين خودكار قطعي3-9-13-9-1

M= (Q , , , q0, F)

Qزيرمجموعه اي از به نام حاالت نهايي

حالت ابتدايي يا شروع ماشين

مجموعه متناهي از حاالت ماشين

تايي5يك مدل رياضي است متشكل از تايي5يك مدل رياضي است متشكل از

الفباي زبان تابع گذر

Page 85: اصول طراحي کامپايلر

85صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

ماشين خودكار غير قطعي ماشين خودكار غير قطعي3-9-23-9-2

DFA اي كه مي توان از هر حالت با عناصر ورودي يكسان به حاالت

مختلفي رسيد.

q3

q1

q7

q4

q4q3

aa

a

a

DFA NFA

Page 86: اصول طراحي کامپايلر

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

پذيرفته توسط ماشين

Page 87: اصول طراحي کامپايلر

87صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

NFANFAمثال ازمثال از

زبان:

( a U b)* abb

10 2 3a b b

b

شروع

Page 88: اصول طراحي کامپايلر

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 , )اگر

Page 89: اصول طراحي کامپايلر

89صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال همبستگي المبدامثال همبستگي المبدا

q0

q2

q1a

a

a

c

b

a cbحالت

q0

q1

q2

}q1 , q2, q0{

}q1 , q2{

}q1{

}q1{

-

-

-

-

-

Page 90: اصول طراحي کامپايلر

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

Page 91: اصول طراحي کامپايلر

91صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات با از عبارات با NFANFA ساخت ساخت 3-9-43-9-4قاعدهقاعده

قاعده اول = اجتماع

1

2 2

1

q0

ماشينM1

ماشينM2

L (M2) U L (M1)

Page 92: اصول طراحي کامپايلر

92صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال اجتماع دو عبارت با قاعدهمثال اجتماع دو عبارت با قاعده

وa اجتماع دو عبارت(aUb = ) b q0

q0

1

2b

a

q0

a

b

1 1

2 2

Page 93: اصول طراحي کامپايلر

93صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات با از عبارات با NFANFA ساخت ساخت 3-9-43-9-4قاعدهقاعدهقاعده قاعده دوم= دوم= الحاقالحاق

q0 21ماشين

M1ماشين

M2

L(M1) L يا L ( m1 ) , L ( M2) الحاق(M2)

Page 94: اصول طراحي کامپايلر

94صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال الحاق دو عبارت با قاعدهمثال الحاق دو عبارت با قاعده

q0 q0ba

q0 2

ba

ab يا a , b الحاق دو عبارت

Page 95: اصول طراحي کامپايلر

95صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات با از عبارات با NFANFA ساخت ساخت 3-9-43-9-4قاعدهقاعده

kelin starقاعده سوم-

1q0 1

ماشينM1

L (M1) kelin star يا L (M1) *

Page 96: اصول طراحي کامپايلر

96صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال كلين استار يك عبارت مثال كلين استار يك عبارت باقاعدهباقاعده

1q0

1

a*

a

a* يا a كلين استار عبارت

Page 97: اصول طراحي کامپايلر

97صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات از عبارات NFANFAمثال تشكيل مثال تشكيل باقاعدهباقاعده

(a U b)*ab زبان q0

q0b

a

ab q0 2 1ba

مرحله 1

Page 98: اصول طراحي کامپايلر

98صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات از عبارات NFANFAمثال تشكيل مثال تشكيل باقاعدهباقاعده

مرحله 2

((a U ba U b ) )q0

a

b

3مرحله

)a U b*(q0

a

b

Page 99: اصول طراحي کامپايلر

99صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

از عبارات از عبارات NFANFAمثال تشكيل مثال تشكيل باقاعدهباقاعده

مرحله 4(a / b*)ab

شروع

a

b پذيرش نهايي

ba

Page 100: اصول طراحي کامپايلر

100صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال يك الگو براي تحليل گر لغويمثال يك الگو براي تحليل گر لغوي

با كمك ماشين قطعيIF الگوي تشخيص ساختار

= رقم يا حرف Letter

21 3 5 640

پذيرش نهايي

شروع I F ( ) letter

any

Page 101: اصول طراحي کامپايلر

101صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فصل چهارم: تحليل نحويفصل چهارم: تحليل نحوي

اهداف رفتاري:دانشجو پس از مطالعه اين فصل با مفاهيم زير

آشنا خواهد شد:

تحليل گر نحوی و خطاهای نحوی گرامر و گرامر مستقل از متن تجزيه باال به پايين و پايين به باال تجزيه پيشگو گرامرهای LL(1)، LR، SLR و LALR

Page 102: اصول طراحي کامپايلر

102صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

فوايد گرامرها فوايد گرامرها4-14-1

- نمايش دقيق و قابل فهمي براي زبان1

- امكان ايجاد پارسرهاي كارآمد با قابليت 2تشخيص ساختارهاي نحوي درست و دقيق

- ايجاد ساختاري مناسب براي زبان جهت ترجمه 3صحيح و آشكارسازي خطا توسط گرامر درست

طراحي شده

- سادگي اضافه نمودن ساختارهاي جديد به زبان4

Page 103: اصول طراحي کامپايلر

103صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده تجزيه كننده4-24-2

دريافت رشته اي از نشانه ها از تحليل گر لغوي و بررسي تعلق رشته به زبان توسط

گرامر

انجام بررسي طبق ساختارهاي نحوي زبان و هر مرحله گزارش خطاهاي نحوي به اداره

كننده خطا

رفع خطا براي پردازش ادامه ورودي بر اساس خطاهاي متداول

Page 104: اصول طراحي کامپايلر

104صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده- ارتباطات تجزيه كننده- ارتباطات4-2-14-2-1

موقعيت تجزيه كننده در مدل موقعيت تجزيه كننده در مدل كامپايلركامپايلر

تحليل گر لغويتحليل گر لغوي

جدول نمادجدول نماد

تجزيه كننده )پارسر(

تجزيه كننده )پارسر(

باقيماندهجلوبندي كامپايلر

باقيماندهجلوبندي كامپايلر

برنامهمبدا

كد مياني

درخت تجزيه

نشانه

درخواست

نشانه بعدي

Page 105: اصول طراحي کامپايلر

105صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

خطاي نحوي خطاي نحوي4-34-3

- لغوي. مانند ديكته غلط شناسه ، 1كلمه كليدي يا عملگر

- نحوي. مانند عبارت محاسباتي با 2- معنايي. مانند استفاده از عملگر با 3پرانتزهاي نامتعادل

عملوندهاي ناسازگار

- منطقي. مانند فراخواني بازگشتي 4بي نهايت

الف سطوح خطاالف سطوح خطا

Page 106: اصول طراحي کامپايلر

106صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

خطاي نحوي خطاي نحوي4-34-3

ب- ويژگي اداره كننده خطاي نحويب- ويژگي اداره كننده خطاي نحوي

توانايي گزارش حضور خطاها را با وضوح و با دقت-

پوشش هر خطا با سرعت كافي به جهت امكان -آشكارسازي خطاهاي بعدي

عدم كاهش بيش از حد سرعت پردازش برنامه هاي -صحيح

Page 107: اصول طراحي کامپايلر

107صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

خطاي نحوي خطاي نحوي4-34-3

ج- استراتژي هاي پوشش خطاي نحويج- استراتژي هاي پوشش خطاي نحوي

-Panic Mode

-Phrase level

-Error production

-Global correction

Page 108: اصول طراحي کامپايلر

108صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- -Panic modePanic mode خطاي نحوي خطاي نحوي 4-34-3

روش كار

ويژگي

ساده ترين روش پوشش -قابل استفاده اكثر روشهاي تجزيه-

.وارد حلقه بي نهايت نمي شود-

ساده ترين روش پوشش -قابل استفاده اكثر روشهاي تجزيه -

.وارد حلقه بي نهايت نمي شود -

صرف نظر از يك نماد در هر مرحله تا زمان پيداشدن نشانه هماهنگ با زبانصرف نظر از يك نماد در هر مرحله تا زمان پيداشدن نشانه هماهنگ با زبان

Page 109: اصول طراحي کامپايلر

109صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- -Phrase LevelPhrase Level خطاي نحوي خطاي نحوي 4-34-3

ويژگي

روش كار

- استفاده از تصحيح موضعي

- عدم ورود به حلقه بي نهايت با دقت در انتخاب جايگزيني

- ضعف در برخورد با خطاهاي اصلي قبل از نقطه تشخيص

قادر به تصحيح هر رشته ورودي-

پيشوندي از باقيمانده ورودي را جايگزين رشته اي مي نمايد كه امكان ادامه تجزيه باشد.

پيشوندي از باقيمانده ورودي را جايگزين رشته اي مي نمايد كه امكان ادامه تجزيه باشد.

Page 110: اصول طراحي کامپايلر

110صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- - Error productionError production خطاي نحوي خطاي نحوي4-34-3

روش كار

اضافه نمودن ساختارهاي مولد خطا به زبان از قبل تشخيص آنها در زمان

تجزيه در رشته ورودي

Page 111: اصول طراحي کامپايلر

111صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- -Global CorrectionGlobal Correction خطاي نحوي خطاي نحوي4-34-3

روش كار

انتخاب الگوريتم هاي تصحيح خطا با قابليت ايجاد كمترين تغييرات در ورودي براي رفع خطا انتخاب الگوريتم هاي تصحيح خطا با قابليت ايجاد كمترين تغييرات در ورودي براي رفع خطا

رخ دادن حداقل تعداد درج ها، حذفها در رشته وروديرخ دادن حداقل تعداد درج ها، حذفها در رشته ورودي

Page 112: اصول طراحي کامپايلر

112صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

گرامر مستقل از متن گرامر مستقل از متن4-44-4

G ( V , Σ , P , S) اجزاي گرامر

قوانين : اعضاي V * ( V Uمجموعه

Σ )

مجموعه متغيرها يا غير پايانه ها

عنصر شروع گرامر

عناصر پايانه

ويژگي زبان

L S ( )اگر و تنها اگر A u ( A V , u ( U V ) +

Page 113: اصول طراحي کامپايلر

113صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

گرامر مستقل از متن - گرامر مستقل از متن - 4-4-14-4-1تعاريفتعاريف

فرم جمله اي

جمله

زبان

رشته w (V U ) يك فرم جمله ايست اگر يك. اشتقاق از S به w وجود داشته باشد

رشته *w يك جمله است اگر يك

اشتقاق از S به w وجود داشته باشد

زبان G كه با L(G ) نشان مي دهند، مجموعه } *w .است {

Page 114: اصول طراحي کامپايلر

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

Page 115: اصول طراحي کامپايلر

115صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال گرامرهاي مستقل از متنمثال گرامرهاي مستقل از متن

S aSb \ aSbb S aSdd \AA bAc \ bc

S aS aBB bB b

S abScB B bB \b

S aSa \ aBaB bB \ b

Page 116: اصول طراحي کامپايلر

116صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

عبارات باقاعده- داليل استفاده عبارات باقاعده- داليل استفاده 4-54-5براي نحو زبانبراي نحو زبان

عدم نياز به نمايش نوع قوي مانند گرامر براي توصيف -1 قوانين ساده لغوي

امكان نمايش مختصرتر و قابل فهم تري براي -2 زباننشانه ها نسبت به گرامر

ايجاد تحليل گرهاي لغوي كاراتر به صورت -3 خودكار

راه مناسبي براي پيمانه سازي جلوبندي كامپايلر -4به دو بخش قابل مديريت با تقسيم ساختار زبان به

لغوي و غيرلغوي

Page 117: اصول طراحي کامپايلر

117صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه- نوع باال به پايين تجزيه- نوع باال به پايين 4-64-6

- سعي در يافتن سمت چپ ترين اشتقاق براي رشته ورودي دارد.1- سعي در ساختن درخت تجزيه براي رشته ورودي با شروع از ريشه2

و ايجاد گره هاي درخت بصورت پيش ترتيب

انواع پارسرهاي باال به پايين

LL (1) 1- گرامرهاي بدون عقبگرد

گرامرهاي با عقبگرد -2

Page 118: اصول طراحي کامپايلر

118صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه- نوع باال به پايينتجزيه- نوع باال به پايين 4-6 4-6

–تجزيه كننده بازگشتي كاهشي ) پيشگو(

تهيه مجموعه اي از پايانه هايي كه در هر قانون براي يك غير پايانه در.سمت راست ظاهر مي شوند

بررسي دنباله رشته ورودي بر طبق مجموعه باال

بررسي باال با مقايسه نماد پيش نگر در ورودي با عناصر مجموعه باال

Page 119: اصول طراحي کامپايلر

119صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

پياده پياده –– تجزيه كننده پيشگو تجزيه كننده پيشگو 4-6-14-6-1سازيسازي

ايجاد نمودار انتقال

حذف بازگشتي چپ در گرامر در صورت وجود -1

ايجاد حال شروع و حالت نهايي براي گرامر -2

AX1, X2,…,Xn 3- رسم يك مسير از حالت شروع به نهايي براي هر قانون به شكل

X1,X2,…,Xn 4- دادن برچسب به لبه ها يا يالهاي مسير به صورت

Page 120: اصول طراحي کامپايلر

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:

Page 121: اصول طراحي کامپايلر

121صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال تجزيه كننده پيشگو- نمودار مثال تجزيه كننده پيشگو- نمودار انتقالانتقال

10 11 12 13 مرحله4

TT`:

F T`

14 15 16 17 مرحله5

(F:

E )

id

Page 122: اصول طراحي کامپايلر

122صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال تجزيه پيشگومثال تجزيه پيشگو

S cAdA ab \ a

cad دنباله ورودي

S

A dc

S

Ac d

a b

S

A dc

ba

(الف) (ب) (پ)

Page 123: اصول طراحي کامپايلر

123صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده پيشگوي غير تجزيه كننده پيشگوي غير 4-6-24-6-2بازگشتيبازگشتي

بخشهاي يك تجزيه كننده غير بازگشتي

حاوي رشته ورودي براي تجزيه با در انتهاي آن$عالمت

دنباله اي از نمادهاي گرامر در هر لحظه براي $ تجزيه با

در ته آنآرايه دو بعدي ]A،]A,a يك غير پايانه و a يك پايانه

عناصر

ميانگير ورودي

پشته

جدول تجزيه

دنباله تجزيه شده تا آن دنباله خروجيزمان

Page 124: اصول طراحي کامپايلر

124صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده پيشگوي غير تجزيه كننده پيشگوي غير 4-6-24-6-2بازگشتيبازگشتي

a + b $

برنامه تجزيه كننده پيشگو

M جدول تجزيه

X

Y

Z

$

پشته

ورودي

خروجي

اشاره گر

Page 125: اصول طراحي کامپايلر

125صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه غير بازگشتي پيشگو تجزيه غير بازگشتي پيشگو 4-6-24-6-2 عملكرد عملكرد––

اگر -X= a = $ 1 باشد توقف تجزيه كننده اعالم خاتمه موفق تجزيه

]A , a[ يك غير پايانه باشد مراجعه به وارده در جدول X 3-اگر

و جايگزيني قانون مناسب آن از جدول

اگر -X= a $ 2 خروج X از پشته ، انتقال اشاره گر ورودي به نماد بعدي در ورودي

Page 126: اصول طراحي کامپايلر

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`

Page 127: اصول طراحي کامپايلر

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`

Page 128: اصول طراحي کامپايلر

128صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

FirstFirst وو FollowFollow مجموعه مجموعه4-74-7

FirstFirst

هر رشته اي از نمادهاي گرامري باشد، مجموعه پايانه a ، شروع مي شوند first (a).اگر رشته كه است a هايي

رشته هاي مشتق شده ازآنها با Follow

مجموعه اي از پايانهاست كه در بالفاصله بعد از آن هستند. براي غير پايانه Aهر شبه جمله

Page 129: اصول طراحي کامپايلر

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

Page 130: اصول طراحي کامپايلر

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

Page 131: اصول طراحي کامپايلر

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

Page 132: اصول طراحي کامپايلر

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اضافه شود.

Page 133: اصول طراحي کامپايلر

133صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال جدول تجزيهمثال جدول تجزيه

First (TE`) = First (T) = { ( , id}

غير پايانه

id + * )( $

E E TE` E TE`

E TE`E` +TE` \ T FT`T` * FT` \ F (E) \ id

Page 134: اصول طراحي کامپايلر

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 مانند

توليد نمي كنند.

Page 135: اصول طراحي کامپايلر

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

Page 136: اصول طراحي کامپايلر

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

جدول تجزيه

Page 137: اصول طراحي کامپايلر

137صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

پوشش خطا در تجزيه پيشگو پوشش خطا در تجزيه پيشگو4-104-10

كنار گذاردن نمادهاي ورودي بعدي تا زمان ظاهر شدن شناسه اي متعلق به مجموعه

اي از شناسه هاي هماهنگ كننده

- عدم تطابق پايانه موجود در باالي پشته با نماد ورودي 1بعدي

در باالي A- خالي بودن وارده جدول براي غير پايانه2 بعنوان نماد ورودي بعديaپشته و پايانه

نوع خطانوع خطا

روش پوشش خطا

Page 138: اصول طراحي کامپايلر

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ه هاي قادر به اشتقاق تهي

Page 139: اصول طراحي کامپايلر

139صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال بروز خطا در تجزيه پيشگومثال بروز خطا در تجزيه پيشگو

- در صورت خالي بودن وارده جدول ، نماد ورودي حذف1

) از مجموعه نشانه هاي هماهنگ synch- در صورت ورودي2 ( Followكننده

خروج غير پايانه باالي پشته براي امكان ادامه تجزيه

در صورت عدم تطابق نشانه باالي پشته با نماد -3 ورودي ، خروج نشانه از پشته

Page 140: اصول طراحي کامپايلر

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`

Page 141: اصول طراحي کامپايلر

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

Page 142: اصول طراحي کامپايلر

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مرحله

Page 143: اصول طراحي کامپايلر

143صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

انتقال انتقال –– تجزيه باال به پايين تجزيه باال به پايين 4-114-11كاهشكاهش

سعي در ايجاد درخت تجزيه با شروع از برگها و رفتن به سمت ريشه = كاهش

جايگزيني يك زيررشته خاص منطبق با سمت راست يك قانون با نمادسمت چپ همان قانون

Page 144: اصول طراحي کامپايلر

144صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

انتقال انتقال ––مثال تجزيه باال به پايين مثال تجزيه باال به پايين كاهشكاهش

S aABeA Abc \ bB d

abbcde دنباله ورودي

abbcdeانتقال aAbcde كاهش aAdeانتقال aABeكاهش S

S aABe aAde aAbcde abbcdeاشتقاق

Page 145: اصول طراحي کامپايلر

145صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه انتقال كاهش - تجزيه انتقال كاهش - 4-11-14-11-1دستگيرهدستگيره

زير رشته اي منطبق بر سمت راست يك قانون و ايجاد كننده يك كاهش به غير پايانه سمت چپ آن قانون

ويژگي دستگيره

زير رشته اي كه با عمل كاهش با توانايي هدايت تجزيه كنندهبه عنصر شروع گرامر

Page 146: اصول طراحي کامپايلر

146صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال دستگيرهمثال دستگيره

abbcde دنباله ورودي

abbcdeانتقال aAbcde كاهش aAdeانتقال aABeكاهش S

دستگيره ها

A b

�A Abc

B d

S aABeA Abc \ bB d

Page 147: اصول طراحي کامپايلر

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مرحله

Page 148: اصول طراحي کامپايلر

148صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال دستگيرهمثال دستگيره

دستگيره ها

جمله دستگيره

id1 + id2 * id3

E + id2 * id3

E + E * id3

E + E * E

id1

id2

id3

E * E

Page 149: اصول طراحي کامپايلر

149صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

دستگيره- هرس نمودن دستگيره- هرس نمودن4-11-1-14-11-1-1

توانايي توليد معكوس سمت راست ترين اشتقاق

مزيت هرس نمودن

مراحل هرس نمودن شبه جمله W = Yn جمله گرامر براي تجزيه باشد، آنگاه W- اگر 1

. ام از سمت راست ترين اشتقاق نامشخصnراست

و كاهش آن تا Yn-1 درBn-1- يافتن دستگيره 2

.Yn-2بدست آمدن شبه جمله راست

- توقف عمليات در صورت رسيدن به عنصر3S شروع گرامر

Page 150: اصول طراحي کامپايلر

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

Page 151: اصول طراحي کامپايلر

151صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مشكالت هرس نمودن مشكالت هرس نمودن 4-11-24-11-2دستگيرهدستگيره

- تعيين زير رشته مناسب براي كاهش در 1يك شبه جمله راست

- انتخاب قانون مناسب در موارد وجود دو يا 2بيشتر قانون با زير رشته يكسان در سمت

راست

Page 152: اصول طراحي کامپايلر

152صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه انتقال كاهش با پشته تجزيه انتقال كاهش با پشته4-124-12

استفاده از پشته به منظور نگهداري نمادهاي گرامراستفاده از ميانگير ورودي جهت نگهداري رشته مورد نظر براي تجزيه

روند تجزيه

انتقال صفر يا چند نماد به پشته -1توسط تجزيه كننده

تا زمان پيدا شدن يك 1ادامه مرحله -2دستگيره در باالي پشته

كاهش دستگيره پيدا شده به سمت چپ -3قانون گرامري مناسب آن

Page 153: اصول طراحي کامپايلر

153صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

عمليات انتقال كاهش با عمليات انتقال كاهش با 4-12-14-12-1پشتهپشته

خطا

انتقال

كاهش

پذيرش

انتقال نماد بعدي ورودي به باالي پشته

وجود انتهاي سمت راست دستگيره در باالي پشته و يافتن سمت چپ آن و تصميم گيري براي جايگزيني

اعالم تكميل موفقيت آميز عمل تجزيه

تشخيص خطاي نحوي و فراخواني رويه پوشش خطا

Page 154: اصول طراحي کامپايلر

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

گرامر

Page 155: اصول طراحي کامپايلر

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

Page 156: اصول طراحي کامپايلر

156صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

–– تجزيه انتقال كاهش تجزيه انتقال كاهش 1313- - 44پيشوند قابل وقوعپيشوند قابل وقوع

مجموعه پيشوندهاي شبه جمالت راست ظاهر شونده در پشته يك تجزيه كننده انتقال كاهش

يا

پيشوندي از يك شبه جمله راست عبور نكننده از انتهايراست سمت راست ترين دستگيره آن شبه جمله

Page 157: اصول طراحي کامپايلر

157صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه انتقال كاهش- تناقض ها تجزيه انتقال كاهش- تناقض ها4-144-14

تناقض انتقال - كاهش

تناقض كاهش كاهش

ترديد در عمل انتقال يا عمل كاهش در زمان تصميم گيري براي تجزيه

كننده

وجود چند قانون براي كاهش يك رشته در يك زمان

Page 158: اصول طراحي کامپايلر

158صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه كننده عملگر اولويت تجزيه كننده عملگر اولويت4-144-14

گرامر نوع عملگر

- 1 .نداشته باشد قوانين

در سمت راست قوانين -2توليد، هيچ كدام از دو پايانه

.كنار هم نباشند

Page 159: اصول طراحي کامپايلر

159صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

گرامر گرامر ––مثال عملگر اولويت مثال عملگر اولويت عملگرعملگر

E EAE \ ( E ) \ - E \ idA + \ - \ / \

وجود دو غير پايانه در سمت راست قانون

گرامر عملگر نيست

Page 160: اصول طراحي کامپايلر

160صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

نقطه ضعفهاي روش نقطه ضعفهاي روش 4-14-14-14-1عملگر اولويتعملگر اولويت

دشوار بودن اداره نمودن نشانه هايي مانند عالمت منها با دو اولويت متفاوت(دوديي يا يگاني )

عدم اطمينان از نتيجه درست تجزيه به دليل رابطه نزديك بين گرامر زبان در حال تجزيه وتجزيه كننده عملگر اولويت

قابليت تجزيه بر روي تنها رده كوچكي از گرامرها

Page 161: اصول طراحي کامپايلر

161صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعيين تعيين –– عملگر اولويت عملگر اولويت 4-14-24-14-2اولويتهااولويتها

رابطه اولويت مجزاي بين هر 3تعريف زوج از پايانه ها

مفهوم رابطه

از a اولويت bكمتراست.

از a اولويت bبيشاست.

يكسان bو a اولويت است.

a <. b

a = b

a . > b

Page 162: اصول طراحي کامپايلر

162صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

عملگر اولويت روشهاي عملگر اولويت روشهاي 4-14-24-14-2تعيين اولويتتعيين اولويت

استفاده از شركت پذيري و اولويت موجود بين خود عملگرها -1در زبان مانند اولويت هاي زير

* .> + , + < . *

ايجاد گرامر غير مبهمي براي زبان و درخت تجزيه آن با -2 قابليت انعكاس شركت پذيري و اولويت صحيح بين عناصر

پايانه در درخت

Page 163: اصول طراحي کامپايلر

163صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تعيين اولويتها تعيين اولويتها––مثال عملگر اولويت مثال عملگر اولويت

+ * ( ) id $

+ >. .< .< >. .< >. * >. >. .< >. .< >.( .< .< .< = .<) >. >. >. >.

Id >. >. >. >.$ .< .< .< .< =

E TE`E` +TE` \ T FT`T` * FT` \ F (E) \ id

Page 164: اصول طراحي کامپايلر

164صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

استفاده از اولويت ها استفاده از اولويت ها4-14-34-14-3

قرار دادن روابط اولويت بين پايانه ها در -1رشته ورودي به تجزيه

- قرار دادن عالمت $ ابتدا و انتهاي رشته 2ورودي به همراه اولويت آن نسبت به اولين

پايانه و آخرين پايانه رشته

حذف غير پايانه ها از جمله -3ورودي

- پويش از انتهاي چپ رشته تا رسيدن به 4

.<اولين اولويت

Page 165: اصول طراحي کامپايلر

165صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

استفاده از اولويت ها استفاده از اولويت ها4-14-34-14-3

تعيين دستگيره شامل هر چيزي در سمت چپ -6 < .و سمت> . در مرحله 5اولين راست

- پويش به عقب ) چپ ( از همان نقطه با پشت 5 >. تا رسيدن به=سرگذاردن هر

Page 166: اصول طراحي کامپايلر

166صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال استفاده از اولويت هامثال استفاده از اولويت ها

تجزيه به ورودي * id + idرشتهid

$ <. Id .> + <. Id .> * <. id .> $.

مرحله 1:

مرحله 2:

از سمت چپ بين . <زمان ديدن اولين + و idاولين

پويش به عقب ردشدن از روي = در

اولين> صورت وجود برخورد با .

Page 167: اصول طراحي کامپايلر

167صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال استفاده از اولويت هامثال استفاده از اولويت ها

مرحله 3:

id يعني اولين >. و .<دستگيره بين اولين Eسمت چپ و تبديل آن به

مرحله 4:

{ و id2 , id3 تشخيص ساير دستگيره هاي مشابه }باقيمانده دنباله ورودي به شكل

$ >. * . < + .< $

مرحله 5:

دستگيره بعدي بين + و * و انتهاي راست آن بين * و E و تبديل به E * E$ يعني

مرحله6:

E و تبديل به E + Eدستگيره بعدي بين + و $ يعني عملگر اولويت –و پايان تجزيه انتقال كاهش

Page 168: اصول طراحي کامپايلر

168صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

اولويتهاي اولويتهاي –– عملگر اولويت عملگر اولويت 4-14-44-14-4بديهيبديهي

داشته باشد، B اولويت بيشتر از عملگر A- اگر عملگر 1 بين آنها برقرار است. B <. A و A . > Bروابط

عملگرهاي با اولويت يكسان باشند، اگر هر دو B و A- اگر 2 و پركت پذير از B <. A , A <. B شركت پذير از راست هستند:

B .> A , A .> B چپ :

Page 169: اصول طراحي کامپايلر

169صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

اولويتهاي اولويتهاي –– عملگر اولويت عملگر اولويت 4-14-44-14-4بديهيبديهي

روابط زير A- براي تمام عملگرهاي مانند 3برقرار است.

$ <. A A .> $ A .> ) ) .> A ( <. A

A <. ( id .> A A <. id

- روابط زير هميشه برقرارند:4

( = ) ( <. ( ( <. id

$ <. ( id .> $ id .> )

$ <. id ) .> $ ) .> )

Page 170: اصول طراحي کامپايلر

170صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال عملگر اولويت- جدول مثال عملگر اولويت- جدول اولويتاولويت

فرضيات

باالترين اولويت و شركت ( توان ) راست - 1 پذير از

و / باالترين اولويت بعدي و * -2شركت پذير از چپ

پايين ترين اولويت و شركت –و + -3پذير از چپ

Page 171: اصول طراحي کامپايلر

171صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال عملگر اولويت - جدول مثال عملگر اولويت - جدول اولويتاولويت

+ - * / id ( ) $

+ >. >. .< .< .< .< .< >. >.- >. >. .< .< .< .< .< >. >.* >. >. >. >. .< .< .< >. >./ >. >. >. >. .< .< .< >. >. >. >. >. >. .< .< .< >. >.Id >. >. >. >. >. >. >.( .< .< .< .< .< .< .< =) >. >. >. >. >. >. >.$ .< .< .< .< .< .< .<

جدول اولويت ها

Page 172: اصول طراحي کامپايلر

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دو تابعاولويت براي پارسر

Page 173: اصول طراحي کامپايلر

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 )

Page 174: اصول طراحي کامپايلر

174صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مثال عملگر اولويت - گراف روابط مثال عملگر اولويت - گراف روابط اولويتاولويت

+ * Id $

f 2 4 4 0

g 1 3 5 0

f (*)

f (id)

g (+)

f ($)

g (id)

g ($)

g (*)

f (+)

Page 175: اصول طراحي کامپايلر

175صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تجزيه عملگر اولويت- تجزيه عملگر اولويت- 4-14-54-14-5پوشش خطاپوشش خطا

انواع خطا

عدم وجود رابطه بين عنصر -1باالي پشته و عنصر ورودي

عدم تطابق مجموعه عناصر -2پيمايش شده در پشته و آماده كاهش با هيچ كدام از قوانين

گرامر

پوشش خطادر حالت اول: قرار گرفتن

اشاره گرهايي به توابع رفع خطا و فراخواني آنها هنگام

وقوع خطا

Page 176: اصول طراحي کامپايلر

176صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR تجزيه كننده هاي تجزيه كننده هاي 1515- - 44

داليل پر طرفداربودن تجزيه كننده LRهاي

قابليت تشخيص ساختارهاي زبانهاي مستقل از متن -1

عمومي ترين روش تجزيه انتقال كاهش غير بازگشتي -2

توانايي تجزيه رده گرامرهاي قابل تجزيه پيش گو -3

سريعترين تشخيص خطاي نحوي با پويش چپ به راست -4

Page 177: اصول طراحي کامپايلر

177صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- نقاط ضعف- نقاط ضعفLRLR تجزيه تجزيه 4-15-14-15-1

كار زياد در ساخت آن براي گرامر زبان بشكل دستي-1

براي ايجاد LR- نيازمند ابزار مولد تجزيه كننده 2

Page 178: اصول طراحي کامپايلر

178صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- انواع- انواعLRLR تجزيه تجزيه 4-15-24-15-2

LR ساده ياSLR

LR متعارف يا CLR

LRپيش نگر LALR يا

ساده ترين

كمترين توانايي

قدرتمند ترين

گرانترين

قدرت متوسط

هزينه متوسط

كار كم براي ايجاد و قابليت تجزيه اكثر گرامرها

جدول تجزيه متفاوت

Page 179: اصول طراحي کامپايلر

179صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

اجزاءاجزاء LRLR - - تجزيه تجزيه 4-15-34-15-3

a1 … ai b … ana

.

.

.S

$

برنامه تجزيهخروج

ي

Action goto

Page 180: اصول طراحي کامپايلر

180صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR تصميم گيري تجزيه تصميم گيري تجزيه 4-15-44-15-4

تصميم گيري الگوريتم در هر لحظه

عنصر باالي ( S)پشته

نشانه aورودي

عنصر پشتهكه s0X1s1X2s2….Xmsm رشته اي به شكل

sm.در باالي پشته قرار دارد

يك نماد يك حالت گرامر

تجزيه

Page 181: اصول طراحي کامپايلر

181صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

جدول تجزيه جدول تجزيه–– LRLR تجزيه تجزيه 4-15-54-15-5

اجزاي جدول تجزيه

actionتابع عملكرد

) دريافت يك gotoتابع انتقالي حالت و نماد و توليد حالت جديد(

action ]sm , ai[

جدول تجزيه

action goto

a1 a2 … ai

m

Page 182: اصول طراحي کامپايلر

182صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

جدول تجزيه جدول تجزيه–– LRLR تجزيه تجزيه 4-15-54-15-5

]action ] sm ,aiمقادير مختلف موجود جدول براي

sn = shiftaccept rn=reduceerror

a روي پشته قرار داده و بعد

n روي پشته مي رود

انجام عمل كاهش با دستور

nام پشته

پايان موفق تجزيه

خطاي نحوي

Page 183: اصول طراحي کامپايلر

183صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

روال تجزيه روال تجزيه –– LRLR تجزيه تجزيه 4-15-64-15-6

در $ به همراه عالمت w- قرار دادن رشته ورودي 1انتهاي آن در ميانگير ورودي

در پشته به عنوان اوليه حالت s0 - گذاردن2

, $[s0] - خواندن وارده جدول تجزيه براي3

- اجراي عمل در نظر گرفته شده در جدول4

[shift , reduce, accept , error]

Page 184: اصول طراحي کامپايلر

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 $

Page 185: اصول طراحي کامپايلر

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ديدن

Page 186: اصول طراحي کامپايلر

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

Page 187: اصول طراحي کامپايلر

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

Page 188: اصول طراحي کامپايلر

188صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR و و LLLL تفاوت گرامر تفاوت گرامر 4-15-74-15-7

توانايي تشخيص وقوع سمت راست يك رشته با ديدن تمام آنچه كه نماد پيش نگرK از آن سمت راست مشتق شده ، با استفاده از

LL(K)LL(K)گرامر گرامر

LR(K)LR(K)گرامر گرامر

نماد از Kتوانايي تشخيص وقوع سمت راست تنها با ديدن اولينآنچه توسط سمت راست آن مشتق شده

Page 189: اصول طراحي کامپايلر

189صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

SLRSLR تجزيه تجزيه 4-164-16

تعريف يك قلم

مثال اقالم مختلف قانون

A XYZ

قانوني از گرامر با يك نقطه در LRيك قلم براي

مكاني در سمت راست آن

A . XYZ

A X .YZ

A XY .Z

A XYZ.

Page 190: اصول طراحي کامپايلر

190صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

تقسيم بندي تقسيم بندي SLRSLR تجزيه تجزيه 4-164-16اقالماقالم

اقالم هسته

اقالم غير هسته

و تمام S` Sشامل قلم اوليهاقالمي كه نقطه آنها در انتهاي

چپ نيست.

اقالمي كه نقطه در .انتهاي چپ است

Page 191: اصول طراحي کامپايلر

191صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

-ايجاد قلم-ايجاد قلمSLRSLR تجزيه تجزيه 4-16-14-16-1

S AaAbS BbBaA B

: تعيين يك نقطه شروع 1مرحلهبراي گرامر

S` SS AaAbS BbBaA B

: گذاردن نقطه در 2مرحلهاولين مكان سمت راست

قانونها

S` . SS .AaAbS .BbBaA . B .

Page 192: اصول طراحي کامپايلر

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 .

Page 193: اصول طراحي کامپايلر

193صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- گروه اقالم- گروه اقالمSLRSLR تجزيه تجزيه 4-16-24-16-2

متعارف فراهم كننده مبنايLR(0) يا گروه LR(0)گروه اقالم SLR ساخت تجزيه كننده هاي

بهgoto و closureساخت به وسيله دو تابع همراه گرامر افزوده

Page 194: اصول طراحي کامپايلر

194صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- گروه اقالم- گروه اقالمSLRSLR تجزيه تجزيه 4-16-24-16-2

closureتابع

closure به مجموعه I- اضافه شدن هر قلم موجود در مجموعه اقالم1

closure درA M .BN درصورت وجودB .K- اضافه شدن قلم 2 در گرامر B K و وجود قانون

Page 195: اصول طراحي کامپايلر

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

Page 196: اصول طراحي کامپايلر

196صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- اقالم معتبر- اقالم معتبرSLRSLR تجزيه تجزيه 4-16-24-16-2

معتبر است اگر:MB1 براي پيشوند قابل وقوع A B1.B2يك قلم به صورت

** وجود داشته باشد. S` M A W M B1B2 Wاشتقاقي به صورت

Page 197: اصول طراحي کامپايلر

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

Page 198: اصول طراحي کامپايلر

198صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- گروه اقالم- گروه اقالمSLRSLR تجزيه تجزيه 4-16-24-16-2

تابع goto(I , X )

با [A Q X K] بر روي مجموعه closure مجموعه .Iدر ]A ] Q . X K شرط وجود

با R Xمجموعه اي از اقالم معتبر براي پيشوند قابل وقوع .I در Rوجود مجموعه اقالم معتبر براي

يا

مجموعه اقالم

نماد گرام

ر

Page 199: اصول طراحي کامپايلر

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

Page 200: اصول طراحي کامپايلر

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 .اضافه كنعقبگرد، تا زماني كه

هيچ مجموعه باي اضافه شدن نمانده

Page 201: اصول طراحي کامپايلر

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

Page 202: اصول طراحي کامپايلر

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

Page 203: اصول طراحي کامپايلر

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.

Page 204: اصول طراحي کامپايلر

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]صورت وجود

Page 205: اصول طراحي کامپايلر

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

Page 206: اصول طراحي کامپايلر

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

Page 207: اصول طراحي کامپايلر

207صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

مرحله 3

- ايجاد جدول - ايجاد جدول SLRSLR مثال تجزيه مثال تجزيه تجزيهتجزيه

Follow (E){ ( ,+ , $ } =

action ] 2 , $ [ = action ] 2 , + [=action ] 2 , ) [ = reduce E T

action ] 2 , * [ = shift 7I2:

E T.

T T. * F

.

.

.ادامه مراحل مطابق

.نمونه ها

Page 208: اصول طراحي کامپايلر

208صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- تعريف قلم- تعريف قلمCLRCLR تجزيه تجزيه 4-174-17

]A Q.K , a[

A QKشكل عمومي يك قلم كه يك پايانه a يك قانون در گرامر و

يا عالمت انتهاي سمت راست .)$(رشته ورودي

در زمان Qاعالم كاهش با به عنوان نماد ورودي aمشاهده

بعدي

عملكرد

Page 209: اصول طراحي کامپايلر

209صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

-پيشوند قابل -پيشوند قابل CLRCLR تجزيه تجزيه 4-174-17وقوع وقوع

y براي يك پيشوند قابل وقوع [A Q.K , a]شرايط قلم معتبر

S &AW &QKW- وجود اشتقاق 1 كه:

y = &Q و

برابر W ياW اولين نماد aيا برابر $aتهي و

**

Page 210: اصول طراحي کامپايلر

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محاسبه

Page 211: اصول طراحي کامپايلر

211صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ايجاد مجموعه - ايجاد مجموعه CLRCLR تجزيه تجزيه 4-174-17اقالماقالم

gotoمحاسبه

J را مساوي مجموعه قلمهاي [A QX.K , a] كه در Iموجودند، در نظر بگير

closure ( J).را برگردان

Page 212: اصول طراحي کامپايلر

212صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ايجاد مجموعه - ايجاد مجموعه CLRCLR تجزيه تجزيه 4-174-17اقالماقالم

item (G`)محاسبه

C= { closure ( { S` .S , $ }) }: قرار ده و تكرار كن

: X و هر نماد گرامر مانندCدر I براي هر مجموعه از اقالم

نيست انجام بده:C تهي نبوده و در goto ( I , X)اگر

goto ( I , X) را به C.اضافه كن برگش

ت اگر قلمي باقيمان

ده

Page 213: اصول طراحي کامپايلر

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. , $

Page 214: اصول طراحي کامپايلر

214صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ايجاد مجموعه - ايجاد مجموعه CLRCLRمثال تجزيه مثال تجزيه اقالماقالم

I9

I8

I7 C d. , $

C cC. , c \ d

C cC. , $

خاتمه كار بدليل نتيجه ندادن ساير اقالم.

I6

C c.C , $

C .cC , $

C .d , $

Page 215: اصول طراحي کامپايلر

215صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ايجاد مجموعه - ايجاد مجموعه CLRCLRمثال تجزيه مثال تجزيه اقالماقالم

I0 I1

I3

I2

I4

I6

I5

I7

I8

I9

S

C C

C

Cc

c

c

c

d

dd

d

براي gotoگراف مثال

Page 216: اصول طراحي کامپايلر

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 در

Page 217: اصول طراحي کامپايلر

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] مجموعه حاوي

Page 218: اصول طراحي کامپايلر

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

Page 219: اصول طراحي کامپايلر

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

Page 220: اصول طراحي کامپايلر

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)

.مشابه هستند

Page 221: اصول طراحي کامپايلر

221صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ساخت جدول - ساخت جدول LALRLALR تجزيه تجزيه 4-184-18تجزيهتجزيه

( باشد كه دراي قلمهاي هسته I0 I1…Ik اجتماع تمام مجموعه اقالم ) Kب اگر goto (J,X)=Xهستند، goto(I1, X) مانند

Page 222: اصول طراحي کامپايلر

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 \ $

Page 223: اصول طراحي کامپايلر

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

Page 224: اصول طراحي کامپايلر

224صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

و و LRLR مثال پوشش خطا در تجزيه مثال پوشش خطا در تجزيه LALRLALR

LRبرخورد با خطا در تجزيه

ورودي داراي خطاي ccd$

0 c 3 c 3 d 4

پشتهaction goto

[4 =] ,$e

آشكارسازي خطا

تشخيص خطا در يك مرحله

Page 225: اصول طراحي کامپايلر

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 آشكارسازيخطا

تشخيص خطا پس از چند كاهش

Page 226: اصول طراحي کامپايلر

226صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- ساخت جدول - ساخت جدول LALRLALR تجزيه تجزيه 4-184-18تجزيه بهينهتجزيه بهينه

چند اصالح در الگوريتم ساخت جدول تجزيه

I- نشان دادن مجموعه اي از اقالم 1با هسته آن

تنها action- بدست آوردن بخش تابع 2بوسيله هسته

با goto- نحوه محاسبه تغيير حالتهاي 3استفاده از هسته

Page 227: اصول طراحي کامپايلر

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

Page 228: اصول طراحي کامپايلر

228صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- تعيين پيش - تعيين پيش LALRLALR تجزيه تجزيه 4-184-18نگرهانگرها

نيست، پيش نگرها `J در مجموعه , #[A M.XN] -اگر 5 انتشارgoto ( I , X) در A MX.N به I در مجموعه B y.vاز

مي يابند.

Page 229: اصول طراحي کامپايلر

229صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-184-18 LALRLALR محاسبه هسته هاي - محاسبه هسته هاي -گروه اقالمگروه اقالم

((LRLR بخش تجزيه بخش تجزيه LRLR- ساختن هسته اقالم1

-اجراي الگوريتم تعيين پيش نگر بر روي هسته هر2 X و نماد گرامر LRمجموعه از اقالم

- تشكيل و مقداردهي جدول معين كننده پيش نگرها3 كه براي هر قلم هسته در هر مجموعه اقالم

- تكرار چند گذر بر روي هر مجموعه اقالم4

Page 230: اصول طراحي کامپايلر

230صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-184-18 LALRLALR محاسبه هسته هاي - محاسبه هسته هاي -گروه اقالمگروه اقالم

پيش نگرهاي خودi- مراجعه به آن دسته اقالم هسته كه 5 را منتشر مي سازد، هنگام مشاهده هر قلم.

و اضافه2- استفاده از اطالعات ثبت شده توسط مرحله 6 به پيش نگرهايي i نمودن مجموعه جاري پيش نگرها براي

مرحله قبل

6-4تكرار مرحله -7

Page 231: اصول طراحي کامپايلر

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.

Page 232: اصول طراحي کامپايلر

232صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- محاسبه هسته هاي - محاسبه هسته هاي LALRLALRمثال مثال گروه اقالمگروه اقالم

: اجراي الگوريتم 2مرحله محاسبه پيش نگرها

S .S , #S .L=R , #S .R , #L .*R , # \ =L .id , # \ =R .L , #

Closure ( {]S` .S , #[})

Page 233: اصول طراحي کامپايلر

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

Page 234: اصول طراحي کامپايلر

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.

Page 235: اصول طراحي کامپايلر

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. $

=

=

=

=

Page 236: اصول طراحي کامپايلر

236صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-184-18 LALRLALRفشرده سازي جدول- فشرده سازي جدول -

actionفشرده سازي جدول

و ايجاد يك ليست حالت براي آن actionفشرده سازي فيلد

actionمشابه بودن سطرهاي زيادي از جدول

Page 237: اصول طراحي کامپايلر

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

Page 238: اصول طراحي کامپايلر

238صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- فشرده سازي جدول- فشرده سازي جدولLALRLALRمثال مثال

مرحله 2

برايaction مساوي بودن بخش 0,4,6,7 حالت هاي

عمل نماد

Id s5

(s4

any error

تبديل به

تبديل 1 ليست مشابهي براي حالت به

عمل نماد

+s6

$acc

any error

Page 239: اصول طراحي کامپايلر

239صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- فشرده سازي جدول- فشرده سازي جدولLALRLALRمثال مثال

مرحله 3

2جايگزيني وارده هاي خطا در حالت

عمل نماد

* s7

any r2

تبديل به

3جايگزيني وارده هاي خطاي حالت عمل نماد

any r4

تبديل به

برايaction مساوي بودن بخش و ادغام آنها5,10,11 حالت هاي

Page 240: اصول طراحي کامپايلر

240صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

- فشرده سازي جدول- فشرده سازي جدولLALRLALRمثال مثال

مرحله 4

8جايگزيني وارده هاي حالت

9جايگزيني وارده هاي حالت

عمل نماد

* s6

)s11

any error

تبديل به

عمل نماد

تبديل به

* s7

any r1

Page 241: اصول طراحي کامپايلر

241صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR وقوع خطا در تجزيه وقوع خطا در تجزيه 4-194-19

actionتشخيص خطا تنها با مراجعه به جدول

اعالم خطا به محض نيافتن ادامه مناسب براي ورودي در حال پويش

عدم كاهش دنباله روي پشته

عدم ورود نماد ايجاد كننده خطا به پشته

Page 242: اصول طراحي کامپايلر

242صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR پويش خطا در تجزيه پويش خطا در تجزيه 4-204-20

panic modeروش

با gotoبا s- پويش پشته به پايين تا يافتن حالت 1Aپايانه خاص

- صرف نظر از يك يا چند نماد ورودي تا يافتن 2Aنماد دقيقا مناسب براي

به پشته و ادامه تجزيه]goto ]s , A- انتقال حالت 3

Page 243: اصول طراحي کامپايلر

243صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

LRLR پويش خطا در تجزيه پويش خطا در تجزيه 4-204-20

Phrase levelروش

- آزمايش هر وارده خطا در 1جدول تجزيه

تصميم گيري در مرورد منشاء -2بروز خطا

ايجاد رويه پوششي مناسب -3براي خطا

Page 244: اصول طراحي کامپايلر

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

Page 245: اصول طراحي کامپايلر

245صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-21-14-21-1 - - YaccYaccاجزاي برنامهاجزاي برنامه

اعالن ها

قوانين ترجمه

cروالهاي حامي

YaccYaccبخش هاي برنامه مبدا

YaccYaccترتيب در متن برنامه مبدا

اعالن ها

قوانين ترجمه

cروالهاي حامي%%

%%

Page 246: اصول طراحي کامپايلر

246صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-21-14-21-1 - - YaccYaccاعالناعالن

بخش اعالن برنامه

اعالن هاي معمول در c و محصور بين , }%

اعالن لغات %} موقت

اعالن نشانه هاي گرامر

Page 247: اصول طراحي کامپايلر

247صفحه: اصول طراحي کامپايلرها گروه کامپيوتر

4-21-24-21-2 - - YaccYaccقوانين ترجمهقوانين ترجمه

%%بخش قوانين ترجمه بالفاصله پس از

عمل معناييمولد يا قانون

عمل < }1انتخاب < : >سمت چپ >> :{1معنايي {2عمل معنايي < }2انتخاب

: < عمل < }3انتخاب { 3معنايي

.

.

.