osole tarahi compailer
Document Sample


اصول طراحي کامپايلر
تهيه کننده: سيده فاطمه نوراني
گروه: کامپيوتر
شناسنامه منبع
کامپايلرها
دلداري
باغاني (خراسان)
:Compilers
Principles, Techniques, and Tools
صفحه: 2 اصول طراحي کامپايلرها گروه کامپيوتر
جايگاه درس در رشته کامپيوتر
ضرورت اين درس:
ضرورت نياز به زبانهای سطح باال
ضرورت ترجمه برنامه های نوشته شده با زبان سطح باال به برنامه به
زبان ماشين
تنوع زبانهای برنامه نويسی سطح باال
دروس پيش نياز: نظريه زبانها و ماشين، طراحی و پياده سازی زبانها
نوع درس: اجباري
تعدادکل ساعات تدريس:03
تعداد جلسات تدريس:01
صفحه: 3 اصول طراحي کامپايلرها گروه کامپيوتر
فصل اول: مقدمه اي بر کامپايلر
اهداف رفتاري:
دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد:
برنامه هاي تحليل کننده
آشنايي با بخش تحليل و بخش سنتز کامپايلر
ابزارهای ساخت کامپايلر
صفحه: 4 اصول طراحي کامپايلرها گروه کامپيوتر
1-1 نمونه اي از برنامه هاي تحليل کننده
ويرايشگرهاي ساختار
چاپگرهاي pretty printer
بررسي کننده هاي ايستا
مفسرها
شکل دهنده هاي متن
کامپايلرهاي سيليسيومي
مفسرهاي پرس و جو
صفحه: 5 اصول طراحي کامپايلرها گروه کامپيوتر
1-2 تعريف كامپايلر
1- ترجمه برنامه از زبان مبدا به برنامه معادل دز زبان مياني
مانند اسمبلي
2- گزارش وجود خطاها را در برنامه مبدا به كاربر.
برنامه مبدأ
کامپايلر برنامه مقصد
«تحليل+ سنتز»
پيغام خطا
صفحه: 6 اصول طراحي کامپايلرها گروه کامپيوتر
1-3 طبقه بندي كامپايلرها
دسته بندي كامپايلرها بر اساس چگونگي ساخت و عمليات:
تك گذره
چند گذره
اشكال زدا و Load-and-go
بهينه ساز
صفحه: 7 اصول طراحي کامپايلرها گروه کامپيوتر
1-4 عمليات كامپايلر
تجزيه برنامه مبدا به اجزاي تشكيل دهنده اش
بخش تحليل
توليد كد مياني از برنامه مبدا
تبديل كد مياني به برنامه مقصد در زبان ديگر بخش سنتز
نياز به بيشترين روشهاي خاص
صفحه: 8 اصول طراحي کامپايلرها گروه کامپيوتر
1-5 سيستم پردازش زبان
اجزاي سيستم
پيش پردازشگر
كامپايلر
اسمبلر
باركننده و ويرايشگر
الحاق
صفحه: 9 اصول طراحي کامپايلرها گروه کامپيوتر
1-5-1پيش پردازشگر
جمع آوري ماژولهاي برنامه مبدا موجود در فايلهاي جداگانه
تبديل بخشهاي خالصه شده بنام درشت دستورات به احكام
زبان مبدا
صفحه: 01 اصول طراحي کامپايلرها گروه کامپيوتر
1-5-2 ارتباطات در سيستم پردازش زبان
اسكلت برنامه
مبدا پيش پردازشگر
برنامه مبدا
كامپايلر
برنامه اسمبلي مقصد
اسمبلر
كد ماشين جابجاپذير
باركننده / ويرايشگر الحاق كتابخانه فايل
هاي مقصد
كد ماشين جابجاپذير
صفحه: 11 اصول طراحي کامپايلرها گروه کامپيوتر
1-6 سه فاز تحليل در عمل کامپايل
تشخيص نشانه ها
خطي(تحليل لغوي يا پويش) تحليل
گروه بندي نشانه هاي برنامه مبدا به مراتبي(تحليل نحوي يا تحليل سلسله
جمالت گرامري
تجزيه)
بررسي خطاهاي معنايي برنامه تحليل معنايي
صفحه: 21 اصول طراحي کامپايلرها گروه کامپيوتر
1-7 مراحل كامپايل
1- تحليل لغوي جلوبندي( گروه فازهاي متوالي وابسته به زبان مبدا)
2- تحليل نحوي
3- تحليل معنايي
4- توليد كد مياني
5- بهينه سازي كد عقب بندي( گروه فازهاي متولي وابسته به زبان مقصد)
6- توليد كد نهايي
صفحه: 31 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-1 نمودار مراحل كامپايل
تحليل گر لغوي
تحليل گر نحوي
تحليل گر معنايي
اداره كننده خطا توليد كننده كد مياني مدير جدول نماد
بهينه ساز كد
توليدكننده كد نهايي
صفحه: 41 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل کامپايلر- تحليل گر لغوي
مرور متن برنامه به صورت حرف به حرف
تبديل آنها به نشانه ها ( كلمات كليدي، عملگر، جداكننده،
ثوابت و شناسه)
صفحه: 51 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل- تحليل گر نحوي
بررسي خروجي تحليل لغوي
ساخت درخت تجزيه از نشانه ها
صفحه: 61 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل - تحليل گر معنايي
بررسي برنامه مبدا براي يافتن خطاهاي معنايي
جمع آوري اطالعات مربوط به نوع داده ها
صفحه: 71 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل - توليد كد مياني
خواندن برنامه ورودي
تبديل به برنامه اي در زبان مياني مانند اسمبلي
صفحه: 81 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل - بهينه ساز كد
بهينه كردن كد مياني ( حذف متغيرهاي مياني غير ضروري)
سرعت بخشيدن به توليد كد نهايي
صفحه: 91 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل - توليد كننده كد نهايي
تبديل كد مياني بهينه به كد جابجاپذير يا اسمبلي
تعيين مكانهاي حافظه براي متغيرهاي برنامه
انتساب متغيرها به ثبات هاي ماشين
صفحه: 02 اصول طراحي کامپايلرها گروه کامپيوتر
1-7-2 مراحل كامپايل - مديريت جدول نماد
تعريف
ساختمان داده اي شامل ركورد براي شناسه و ميدانهايي براي
صفات أن
هدف
فراهم كردن شناسايي سريع ركورد شناسه بمنظور
ذخيره و بازيابي داده هايش
صفحه: 12 اصول طراحي کامپايلرها گروه کامپيوتر
Area:= Pos + Rate * 50 مثال از مراحل كامپايل: عبارت
Area:= Pos + Rate * 50
تحليل گر لغوي
id1:= id2+ id3 *
50
tem1:=into real 50
tem2:=id3 * tem1 := :=
tem3:= id2 + tem2 توليد كد مياني
Id1:= tem3 + تحليل معناييid1 +
id1
بهينه ساز id2 * *
id2
tem1:= id3 * 50.0 Into real
id3 id3
Id1:= id2 + tem1 50
50
Mov id, R2
Mov id2 , R1
Mul 50.0 , R2
Mov R1, id1 Add R2, R1
22 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
1-8 ابزارهاي ساخت كامپايلر
مولدهاي تجزيه كننده
توليد كننده هاي پويشگر
موتورهاي ترجمه نحوگرا
مولدهاي كد خودكار
موتورهاي جريان داده
صفحه: 32 اصول طراحي کامپايلرها گروه کامپيوتر
فصل دوم : نحو زبان و تجزيه
اهداف رفتاري:
دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد:
گرامر
اشتقاق و تجزيه
تعريف نحوگرا
درخت نحوی
تجزيه باال به پايين و پايين به باال
ترجمه
صفحه: 42 اصول طراحي کامپايلرها گروه کامپيوتر
2-1 گرامر
تعريف
گرامر: روش ساخت رشته هايي متشكل از نمادها
کاربرد
وسيله تشخيص عضويت يك رشته در زبان
مشخص كننده ساختار يك زبان
صفحه: 52 اصول طراحي کامپايلرها گروه کامپيوتر
2-2 تعريف رياضي گرامر
گرامر 4 گانه }G = {N, T, S, P
مجموعه غير پايانه ها =N
مجموعه پايانه ها =T
عضو شروع =S
مجموعه قوانين توليد رشته هاي زبان =P
صفحه: 62 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از يك گرامر
} N = { E, F
} T = { +, * , / ,id
S=E
} P = { E F * id , F F / E , F F + F
id * id+ id رشته توليدي نمونه
صفحه: 72 اصول طراحي کامپايلرها گروه کامپيوتر
2-3 اشتقاق
فرآيند توليد رشته از گرامر با شروع از عنصر ابتداي
گرامر و استفاده از قوانين.
از چپ: در هر قدم انجام جايگزيني روي
سمت چپ ترين غيرپايانه
انواع اشتقاق
از راست: در هر قدم انجام جايگزيني روي
سمت راست ترين غيرپايانه
صفحه: 82 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از اشتقاق
توليد رشته id + id * id
اشتقاق راست
E 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
صفحه: 92 اصول طراحي کامپايلرها گروه کامپيوتر
2-3-1 درخت تجزيه
درخت تجزيه نشان دهنده چگونگي اشتقاق رشته اي از زبان
از نماد شروع گرامر
ساخت درخت تجزيه
- Sريشه درخت
قانون A = A XYZگره اي در درخت و XYZفرزندان آن
قانون A = A Xaگره اي در درخت و X ,aفرزندان آن
پايانه ها ( حروف كوچك) تنها در برگها ديده مي شوند.
صفحه: 03 اصول طراحي کامپايلرها گروه کامپيوتر
2-3-2 درخت اشتقاق
درخت تجزيه اي نشان دهنده مراحل اشتقاق بكار رفته (راست يا چپ)
E
مثال
E E
+ id + id * id
id E E
*
id id
صفحه: 13 اصول طراحي کامپايلرها گروه کامپيوتر
2-4 گرامر مبهم
وجود دو اشتقاق راست يا دو اشتقاق چپ راي يك رشته در گرامر
مثال id + id * id
اشتقاق چپ اول
E E + E id + E id + E * E id + id * E id + id * id
اشتقاق چپ دوم
E E + E id + E id + E * E id + id * id
صفحه: 23 اصول طراحي کامپايلرها گروه کامپيوتر
2-5 نشان گذاري پسوندي
نشان گذاري يك عبارت مانند E
1- اگر Eمتغير و يا ثابت باشد نشان گذاري آن خودش مي شود.
2- اگر Eعبارتي بشكل 2 E1 op Eباشد كه Opعملگر دودويي است نشان
گذاري آن عبارتست از F1 F2 Opكه 2 F1, Fنشان گذاري 2 E1 , Eهستند.
3- اگر Eعبارتي بشكل )1 (Eباشد، نشان گذاري براي 1 Eهمان نشان گذاري
براي Eمي باشد.
)2+5(-9 - +259
صفحه: 33 اصول طراحي کامپايلرها گروه کامپيوتر
2-6 تعريف نحو گرا
كاربرد براي ترجمه ساختارهاي زبان.
ترجمه ساختار را بر حسب صفات مربوط به مولفه هاي
نحوي
تعيين نوع ساختار، مكان اولين دستور توليد شده در برنامه
هدف يا تعداد دستورات براي كامپايلر
صفحه: 43 اصول طراحي کامپايلرها گروه کامپيوتر
2-6-1 تعريف نحوي جهت دار
گرامر و مجموعه اي از قواعد معنايي وابسته به آن
هر نماد در گرامر مجموعه اي از صفات دارد. 1.
صفات و
در هر مولد يا قانون گرامر مجموعه اي از قواعد 2.
محاسبه آنها
معنايي براي محاسبه مقادير صفات نمادها وجود دارد.
صفحه: 53 اصول طراحي کامپايلرها گروه کامپيوتر
2-7 ترجمه
ساختن درخت ترجمه:
الف( ساختن درخت تجزيه براي ورودي
ب) اگر گره nدر درخت تجزيه با نماد xاز گرامر متناظر باشد، x.a
مقدار صفت aاز نماد xدر آن گره است.
ج) مقدار x.aدر گره nبا استفاده از قواعد معنايي براي صفت aهمراه
با قانون گرامري استفاده شده درگره nمحاسبه مي شود.
صفحه: 63 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از ترجمه
قانون قواعد معنايي
expr expr1 + term ,+, // expr.t := expr1.t // term.t
expr expr1 - term - , // expr.t := expr1.t // term.t
,
expr term expr.t := term.t
term 0 ,0 , =: term.t
term 1 ,1 , =: term.t
..… ..…
term 9 ,9 , =: term.t
تعريف نحوگرا براي ترجمه عبارات ميانوندي به عبارت معادل پسوندي
صفحه: 73 اصول طراحي کامپايلرها گروه کامپيوتر
2- 7-1درخت نحوي
+2-59 = expr.t
-59 = expr.t 2 = term.t
9 = expr.t 5 = term.t
9 = term.t
9 - 5 +
2
صفحه: 83 اصول طراحي کامپايلرها گروه کامپيوتر
2-7-2 انواع درخت نحوي
درخت نحو مجرد
هر گره نماينده يك عملگر و فرزندان آن عملوند آن
درخت نحو واقعي
درخت تجزيه اي كه عملگرها خود فرزند محسوب مي شوند.
صفحه: 93 اصول طراحي کامپايلرها گروه کامپيوتر
2-8 الگوي ترجمه
گرامر مستقل از متني كه قطعه برنامه هايي كه عمليات معنايي
ناميده مي شوند در سمت راست قوانين آن اضافه شده اند.
تفاوت با ترجمه نحوگرا
نمايش ترتيب ارزشيابي قوانين بطور صريح.
صفحه: 04 اصول طراحي کامپايلرها گروه کامپيوتر
2-8-1 درخت توليد شده براي الگوي ترجمه
expr
طريقه ساخت درخت
1expr
+
term
} ) ,+, ( {print
يك برگ اضافي ساخته شده براي عمل معني
1- ساختن فرزند اضافي براي درخت
2- متصل نمودن اين فرزند به گره مربوط به قانون خود در
گرامر
صفحه: 14 اصول طراحي کامپايلرها گروه کامپيوتر
2-9 تجزيه ( پارسينگ)
* تجزيه به كمك تحليلگر نحوي و به نام تحليل نحوي انجام مي گيرد.
* در تجزيه تعلق رشته ورودي به زبان مبدا بررسي مي شود.
* بررسي طبق ساختار و نحو دستورات زبان مبدا انجام مي گيرد.
صفحه: 24 اصول طراحي کامپايلرها گروه کامپيوتر
2-9-1 تجزيه- دسته بندي روشها
روش باال به پايين :
ساخته شدن درخت تجزيه از
باال به پايين. مانند )1(LL
روش پايين به باال:
ساخته شدن درخت تجزيه از پايين
مانند تجزيه به باال
عملگر0 اولويت و
LR
صفحه: 34 اصول طراحي کامپايلرها گروه کامپيوتر
2-9-1-1 تجزيه كننده باال به پايين
آغاز تجزيه از عنصر شروع گرامر
جايگزيني قانون يك غير پايانه
قانون كاربرد دارد؟
خير بلي
عقبگرد به قانون هم سطح ديگر برو به قانون سطح بعد
صفحه: 44 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از تجزيه باال به پايين
S bBe
B cf/ ce/c
تجزيه:
Back tracking Back tracking
S S
S S
b e
b B e B
bb B e b B e
c e
c
c f
صفحه: 54 اصول طراحي کامپايلرها گروه کامپيوتر
2-9-1-2 تجزيه باال به پايين پيش گويانه
روش تجزيه باال به پايين بدون ويژگي عقبگرد
با نگاه به نماد پيش نگر در مورد استفاده از هر قانون درتصميم گيري
نماد پيش نگر
مجموعه تمام پايانه هايي است كه در قوانين مربوط به غير پايانه در سمت
چپ قرار مي گيرند
صفحه: 64 اصول طراحي کامپايلرها گروه کامپيوتر
مثال
نمادهاي پيش نگر يا مجموعه First
A aB /cC / e
B dA / c
C cB / a
} First (A):{ a, c, e
} First (B): { d, c
} First (C) : {c, a
صفحه: 74 اصول طراحي کامپايلرها گروه کامپيوتر
2-01 بازگشتي چپ
ظاهر شدن غير پايانه سمت چپ در سمت راست قانون بعنوان
اولين عنصر
حذف بازگشتي چپ پيش از تجزيه
A xZ / yZ
A Aa / Ab / Ac / x / y
Z aZ / bZ / cZ
صفحه: 84 اصول طراحي کامپايلرها گروه کامپيوتر
مثال حذف بازگشتي چپ
S Aa / b
A Ac / Sd
A Ac / Aad / bd
S Aa / b
S Aa / b
A bdZ
Z cZ / adZ
صفحه: 94 اصول طراحي کامپايلرها گروه کامپيوتر
2-11 فاكتور چپ
يكسان بودن عنصر سمت چپ در حداقل دو قانون گرامر
فاكتورگيري چپ
فاكتورگيري از a A aZ
A aB / aC
ZB/C
صفحه: 05 اصول طراحي کامپايلرها گروه کامپيوتر
مثال فاكتورگيري چپ
S iEtS S iEtSZ /a
S iEtSeS / a Z eS
Eb
Eb
S iEtS / iEtSes
S a
Eb
51 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
2-21 تحليل لغوي
- دريافت يك رشته كاراكتري از ورودي
- استخراج نشانه ها از آن
- تحويل نشانه ها به تجزيه كننده
- ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا
- حذف فضاهاي خالي بين عبارات و توضيحات برنامه
- تشخيص شناسه ها و كلمات كليدي زبان
صفحه: 25 اصول طراحي کامپايلرها گروه کامپيوتر
مثال
Count = count + increment
Count = count + increment تحليل لغوي عبارت دستوري
تحليل گر لغوي
id = id + id
id = id + id تجزيه كننده
صفحه: 35 اصول طراحي کامپايلرها گروه کامپيوتر
2-21-1 رابط تحليلگر لغوي
مصرف نشانه ها
ورودي ميانگير براي تعيين ساختار
دستورات
تحليل گر لغوي
تحليل گر نحوي
( تجزيه كننده)
1- در هر زمان حاوي يك بلوك از كاراكترها ميانگير
2- اشاره گري به مكان نشانه بعدي پردازش نشده
صفحه: 45 اصول طراحي کامپايلرها گروه کامپيوتر
2-31 تشكيل جدول نماد
جدولي ساخته شونده توسط. فازهاي تحليل، مورد استفاده فازهاي
توليد كد
ذخيره رشته كاراكتري تشكيل دهنده شناسه در جدول. فاز تحليل لغوي
اضافه كردن نوع شناسه، مورد استفاده(رويه، متغير و..) فاز تحليل نحوي
درج مكان شناسه در حافظه در جدول فاز تحليل معنايي
استفاده از اطالعات جدول براي دسترسي به متغير و فاز توليد كد
توليد كد
صفحه: 55 اصول طراحي کامپايلرها گروه کامپيوتر
2-31-1 جدول نماد- روالها
: ) Lookup ( s : )Insert ( s , t
اگر sدر جدول است، انديس آن بر انديس وارده جديد مربوط به رشته s
مي گردد اگر نه، صفر بر مي گردد نشانه tرا بر مي گرداند.
عمل Lookupتعيين وجود شناسه در جدول نماد
در صورت عدم وجود شناسه ، درج آن در جدول Insert عمل
صفحه: 65 اصول طراحي کامپايلرها گروه کامپيوتر
2-31-2 جدول نماد- پياده سازي
كلمات دستوري mod
: ptrاشاره گر : attributesصفات : tokenنشانه
div
در متن برنامه div
mod
id
d i v m o d a
دنباله كاراكترهاي ورودي
صفحه: 75 اصول طراحي کامپايلرها گروه کامپيوتر
2-41 ماشين پشته انتزاعي
ماشين پشته انتزاعي: شكل مرسوم نمايش مياني توليد
كد
1- حافظه دستورات اجزاي ماشين
2- حافظه داده ها
محاسبات ماشين
1- محاسبات صحيح
2- دستورات دستكاري پشته
3- روند كنترل
صفحه: 85 اصول طراحي کامپايلرها گروه کامپيوتر
2-41-1 دستورات محاسباتي
قابليت پياده سازي مستقيم عملهاي پايه مانند جمع ، تفريق و ... در ماشين
انتزاعي سازي. عمليات پيچيده تر با دنباله اي از دستورات اوليه ماشين
پياده
استفاده از نمايش پسوندي در كد ماشين براي ارزيابي يك عبارت محسباتي
استفاده از پشته در حين ارزيابي عبارات
ارزشيابي عبارت در ماشين
انجام عملگر بر روي مقدار پشته
بيرون پراندن عملوندها از پشته
قرار دادن نتيجه بر روي پشته
صفحه: 95 اصول طراحي کامپايلرها گروه کامپيوتر
مثال ارزيابي عبارت محاسباتي با پشته
عبارت محاسباتي *5 + 31
1- عدد 1 را روي پشته قرار ده
2- عدد 2 را روي پشته قرار ده
3- دوتا از باالترين عناصر پشته را با هم جمع و آن دو را از پشته بيرون ده
4- نتيجه يعني عدد 4 را روي پشته قرار ده
5- عدد 5 را روي پشته قرار ده
6- دوتا باالترين عناصر پشته را در هم ضرب و آنها را بيرون ده
7- نتيجه يعني عدد 02 را روي پشته قرار ده
صفحه: 06 اصول طراحي کامپايلرها گروه کامپيوتر
2-41-2 دستكاري پشته
Push s Sرا روي پشته قرار ده
rvalue l محتويات مكان Lرا روي پشته قرار ده
lvalue l آدرس Lرا روي پشته قرار ده
pop مقدار در باالي پشته را دور بريز
=: r-valueبروي پشته در l-valueزير آن گذاشته و هر دو از پشته خارج
copy يك نسخه از مقدار باالي پشته را بر روي پشته فشار بده
صفحه: 16 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عمليات در پشته هنگام محاسبه
day := (1461*y) div 4 + (153*m + 2 ) div 5 + d ترجمه
lvalue day push 2
push 1461 +
rvalue y push 5
* div
push 4 +
div
rvalue d
push 153
+
rvalue m
:=
*
62 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
2-41-3 كنترل جريان در ماشين
تعيين مكان پرش
1- تعيين محل پرش با عملوند دستور
2- تعيين فاصله نسبي براي پرش مثبت يا منفي با عملوند دستور
3- تعيين محل پرش با نماد هاي دستور
امكان برداشتن عملوند
از باالي پشته
صفحه: 36 اصول طراحي کامپايلرها گروه کامپيوتر
2-41-3-1 كنترل جريان - دستورات
lable l عدم تاثير در مقصد پرش ها به L
goto l اجراي دستور بعدي از حكمي با برچسب L
gofalse l خارج نمودن مقدار باالي پشته، پرش در صورت صفر بودن
gotrue l خارج نمودن مقدار باالي پشته ، پرش در صورت صفر نبودن
halt توقف اجرا
صفحه: 46 اصول طراحي کامپايلرها گروه کامپيوتر
فصل سوم: تحليلگر لغوي
اهداف رفتاري:
دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد:
آشنايي با تحليلگر لغوی
عبارات و گرامر باقاعده
تحليلگر لغوی Lex
ماشين خودکار قطعی و غير قطعی و تبديل آنها به يکدگر
صفحه: 56 اصول طراحي کامپايلرها گروه کامپيوتر
3-1 وظايف تحليل گر لغوي
1- خواندن نمادهاي ورودي
2- توليد دنباله اي از نشانه ها
3- ثبت نشانه ها در جدول نمادها
4- حذف توضيحات برنامه، جاي خالي و كاراكتر مربوط به سطر جديد
5- ارتباط دادن پيامهاي خطاي توليد شده كامپايلر با برنامه مبدا
صفحه: 66 اصول طراحي کامپايلرها گروه کامپيوتر
3-2 ارتباط با تجزيه كننده
نشانه
برنامه مبدا
تحليل گر لغوي تحليل گر نحوي
نشانه بعدي را بده (تجزيه كننده)
جدول نماد
ارتباط تحليل گر لغوي با تجزيه كننده
صفحه: 76 اصول طراحي کامپايلرها گروه کامپيوتر
3-2-1 داليل جدايي فازهاي تحليل لغوي و تجزيه
1- ساده تر بودن طراحي دو فاز
2- افزايش كارايي كامپايلر به دليل استفاده از
ميانگير بين دو فاز
3- قابليت حمل كامپايلر و محدود شدن تغييرات به
تحليلگر لغوي
صفحه: 86 اصول طراحي کامپايلرها گروه کامپيوتر
3-3 خطاي مرحله تحليل لغوي
منطبق نبودن هيچ كدام از الگوهاي مربوط به تشخيص نشانه ها
در زبان مبدا با پيشوندي از ورودي
1- Panic Mode
2- حذف كاراكتر اضافي
روشهاي پوشش
3- درج كاراكتر از قلم افتاده
خطا
4- جايگزيني يك كاراكتر بجاي كاراكتر غلط
5- جابجا نمودن دو كاراكتر مجاور هم
صفحه: 96 اصول طراحي کامپايلرها گروه کامپيوتر
3-3-1 پوشش خطا- Panic mode
ساده ترين شيوه پوشش خطا
حذف كاراكترهاي متوالي از باقيمانده ورودي تا پيدا شدن نشانه
قابل قبول توسط تحليل گر لغوي
كافي بودن براي يك سيستم محاسباتي محاوره اي
صفحه: 07 اصول طراحي کامپايلرها گروه کامپيوتر
3-4 تحليلگر لغوي – پياده سازي
روشهاي پياده سازي
استفاده از توليد كننده تحليلگر لغوي مانند كامپايلر Lex
نوشتن تحليلگر لغوي به زبانهاي متداول برنامه نويسي
سيستم و خواندن رشته ورودي با تسهيالت I/O
نوشتن تحليلگر لغوي به اسمبلي و مديريت
صريح خواندن رشته ورودي
صفحه: 17 اصول طراحي کامپايلرها گروه کامپيوتر
3-5 عبارات با قاعده
قواعد تعريف
1- عبااارت باقاعااده زبااان {( }مجموعااه حاااوي رشااته تهااي) را مشااخص مااي
نمايد.
2- } {aعبارت باقاعده اي است که زبان ( aنمادي از )Σرا مي سازد.
3- اگاار aو bعبااارات باقاعااده باشااند، اجتماااع، الحاااق و Kelin Starآنهااا هاام
باقاعده است.
صفحه: 27 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عبارات باقاعده
اگر } ={a,bباشد آنگاه:
1- از عبارت باقاعده aUbمجموعه } {a , bساخته مي شود.
2- از عبارت باقاعده ) (aUb) (aUbمجموعه } { aa, ab,ba,bbتوليد مي شود.
3- عبارت باقاعده * aكليه رشته هايي با صفر يا چند aرا توليد مي كند.
4- عبارت باقاعده * ) (aUbرشته هايي با صفر يا چند نماد از bيا aرا توليد مي كند.
صفحه: 37 اصول طراحي کامپايلرها گروه کامپيوتر
3-5-1 عبارات باقاعده – خواص جبري
اصل توصيف
aUb=bUa / جابجا پذير است.
a U ( b U c)=(a U b U c / شركت پذير است
)(a b) c = a (b c الحاق شركت پذير است.
a (b U c) = a b U a c الحاق نسبت به / توزيع پذير است
( b U c) a = b a U c a
) a* = (a U
*a** = a
صفحه: 47 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عبارات با قاعده در زبان پاسكال
تعريف باقاعده مربوط به شناسه ها
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
75 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
3-6 مجموعه هاي بي قاعده
1- ساختارهاي موازنه اي و النه اي
2- رشته هاي تكراري
3- رشته هايي براي مقايسه دو چيز
صفحه: 67 اصول طراحي کامپايلرها گروه کامپيوتر
3-7 گرامر با قاعده
فرم قوانين گرامر باقاعده
A→a
aعنصري از الفبا و پايانه
A→λ
Bو Aغير پايانه
A → aB
صفحه: 77 اصول طراحي کامپايلرها گروه کامپيوتر
مثال چند گرامر با قاعده
ْ G: S abSA
الف
A Aa
G: S aSb/ab ب
G: S bS/cS/aB
B aB/cS /bC پ
C aB / bS
صفحه: 87 اصول طراحي کامپايلرها گروه کامپيوتر
3-8 توليدكننده تحليلگر لغوي - Lex
روش ايجاد تحليلگر توسط Lex
مشخصه Lex.yy.c 1- آماده شدن پرونده اي حاوي
كامپايلر Yacc
:1.Lex مشخصه تحليلگر براي Lex
2- تبديل محتواي پرونده به
Lex.yy.c a.out برنامه در زبان C
كامپايلر C
3- كامپايل برنامه توليدي همراه
ورودي خروجي كتابخانه برنامه تحليل لغوي
a.out
دنباله نشانه ها
4- خروجي: برنامه تحليلگر
صفحه: 97 اصول طراحي کامپايلرها گروه کامپيوتر
3-8-1 - Lexاجزاي برنامه
اعالن ها
قواعد ترجمه بخش هاي برنامه مبدا Lex
رويه هاي كمكي c
اعالن ها
%%
قواعد ترجمه ترتيب در متن برنامه مبدا Lex
%%
رويه هاي كمكيc
صفحه: 08 اصول طراحي کامپايلرها گروه کامپيوتر
3-8 توليدكننده تحليلگر لغوي
اعالن متغيرها
اعالن ثوابت صريح بخش اعالن برنامه
تعاريف باقاعده (اجزاي عبارات باقاعده
مورد استفاده در قواعد ترجمه)
صفحه: 18 اصول طراحي کامپايلرها گروه کامپيوتر
3-8-1 - Lexاجزاي برنامه
بخش قوانين ترجمه بالفاصله پس از %%
1P } عمل معنايي 1{ :
2P } عمل معنايي 2{ : عمل مناسب عبارت باقاعده
}عمل معنايي 3 { :
.
.
.
رويه هاي كمكي C
مورد استفاده دراجراي اعمال
صفحه: 28 اصول طراحي کامپايلرها گروه کامپيوتر
3-9 ماشين خودكار متناهي
ابزاري براي تشخيص ساختارهاي موجود زبان در دنباله ورودي از
نشانه ها و پذيرفتن يا نپذيرفتن دنباله كاراكترهاي ورودي
DFA 1- ماشين خودكار متناهي قطعي
انواع ماشين هاي خودكار
NFA 2- ماشين خودكار متناهي غير قطعي
صفحه: 38 اصول طراحي کامپايلرها گروه کامپيوتر
3-9-1 ماشين خودكار قطعي
يك مدل رياضي است متشكل از 5تايي
الفباي زبان تابع گذر
)M= (Q , , , q0, F
زيرمجموعه اي از Qبه نام
حاالت نهايي
حالت ابتدايي يا شروع ماشين مجموعه متناهي از حاالت ماشين
صفحه: 48 اصول طراحي کامپايلرها گروه کامپيوتر
3-9-2 ماشين خودكار غير قطعي
DFAاي كه مي توان از هر حالت با عناصر
ورودي يكسان به حاالت مختلفي رسيد.
4q
a
a
a
3q 4q 7q
3q
a
DFA NFA 1q
صفحه: 58 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از DFA
تبديل به
ماشين a b
S aS / aA قطعي
a b
A bA / b S A Z
اشتقا محاسبه رشته پردازش شده
ق
S aS ][S , aabb] [S , abb a
aaA ][A,bb aa
aab
aabA ][A , b
aabb
aabb ] ,[Z
پذيرفته توسط ماشين
صفحه: 68 اصول طراحي کامپايلرها گروه کامپيوتر
مثال از NFA
( a U b)* abb زبان:
شروع a b b
0 1 2 3
b
صفحه: 78 اصول طراحي کامپايلرها گروه کامپيوتر
3-9-3 تبديل NFAبه DFA
تعريف : هبستگي المبدا يا )- closure (qiبه صورت
بازگشتي :
1- پايه: )qi -closure (qi
2- مرحله بازگشت: اگر qjيك عنصر از ) -closure(qjباشد و اگر ) qk (gj ,
آنگاه ) qk -closure (qjاست.
3- همبستگي : qjدر ) -closure (qiاست اگر بتواند با تكرار متناهي از مرحله بازگشت
بدست آيد.
صفحه: 88 اصول طراحي کامپايلرها گروه کامپيوتر
مثال همبستگي المبدا
a b
a
0q 1q
a
2q حالت a b c
c
} 0q0 { q1 , q2, q - -
1q - }1{q -
2q - }1{q }2{ q1 , q
صفحه: 98 اصول طراحي کامپايلرها گروه کامپيوتر
DFA بهNFA مثال تبديل
a NFA b a q1 , q2, q0
q0
a b,c
q0 q1
a e
q2
c
a
a q1 , q2, q0
q0
c c
b,c b
q1 , q2 DFA
a , b, c e a,c
b
q1
b پذيرش
a
90 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
3-9-4 ساخت NFAاز عبارات با قاعده
قاعده اول = اجتماع
ماشين
1 1M 1
0q
2 ماشين 2
2M
)1L (M2) U L (M
صفحه: 19 اصول طراحي کامپايلرها گروه کامپيوتر
مثال اجتماع دو عبارت با قاعده
a اجتماع دو عبارت aو = ) (aUb
0q 1 b
b
0q 2 a
1 1
0q
b
2 2
صفحه: 29 اصول طراحي کامپايلرها گروه کامپيوتر
3-9-4 ساخت NFAاز عبارات با قاعده
قاعده دوم=
الحاق
ماشين ماشين
0q 1M 1 2 2M
الحاق )2 L ( m1 ) , L ( Mيا )2L(M1) L (M
صفحه: 39 اصول طراحي کامپايلرها گروه کامپيوتر
مثال الحاق دو عبارت با قاعده
الحاق دو عبارت a , bيا ab
a b
0q 0q
a b
0q 2
صفحه: 49 اصول طراحي کامپايلرها گروه کامپيوتر
3-9-4 ساخت NFAاز عبارات با قاعده
قاعده سوم- kelin star
ماشين
0q 1 1M 1
L (M1) kelin starيا * )1L (M
صفحه: 59 اصول طراحي کامپايلرها گروه کامپيوتر
مثال كلين استار يك عبارت باقاعده
كلين استار عبارت aيا *a
a
0q 1 1
*a
صفحه: 69 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تشكيل NFAاز عبارات باقاعده
a
زبان (a U b)*ab 0q
b
0q
مرحله 1
a b
ab 0q 1 2
صفحه: 79 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تشكيل NFAاز عبارات باقاعده
a
)(a U b مرحله 2
0q
b
مرحله 3
a
*)(a U b
0q
b
صفحه: 89 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تشكيل NFAاز عبارات باقاعده
مرحله 4
(a / b)*ab
a
b
شروع a
b پذيرش نهايي
صفحه: 99 اصول طراحي کامپايلرها گروه کامپيوتر
مثال يك الگو براي تحليل گر لغوي
الگوي تشخيص ساختار IFبا كمك ماشين قطعي
رقم يا حرف = Letter
any
F letter
شروع I ( )
0 1 2 3 4 5 6
پذيرش نهايي
صفحه: 001 اصول طراحي کامپايلرها گروه کامپيوتر
فصل چهارم: تحليل نحوي
اهداف رفتاري:
دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد:
تحليل گر نحوی و خطاهای نحوی
گرامر و گرامر مستقل از متن
تجزيه باال به پايين و پايين به باال
تجزيه پيشگو
گرامرهای )1( SLR ،LR ،LLو LALR
صفحه: 101 اصول طراحي کامپايلرها گروه کامپيوتر
4-1 فوايد گرامرها
1- نمايش دقيق و قابل فهمي براي زبان
2- امكان ايجاد پارسرهاي كارآمد با قابليت تشخيص ساختارهاي نحوي
درست و دقيق
3- ايجاد ساختاري مناسب براي زبان جهت ترجمه صحيح و آشكارسازي
خطا توسط گرامر درست طراحي شده
4- سادگي اضافه نمودن ساختارهاي جديد به زبان
صفحه: 201 اصول طراحي کامپايلرها گروه کامپيوتر
4-2 تجزيه كننده
دريافت رشته اي از نشانه ها از تحليل گر لغوي و بررسي تعلق
رشته به زبان توسط گرامر
انجام بررسي طبق ساختارهاي نحوي زبان و هر مرحله گزارش
خطاهاي نحوي به اداره كننده خطا
رفع خطا براي پردازش ادامه ورودي بر اساس خطاهاي متداول
صفحه: 301 اصول طراحي کامپايلرها گروه کامپيوتر
4-2-1 تجزيه كننده- ارتباطات
برنامه مبدا نشانه درخت تجزيه كد مياني
تجزيه كننده باقيمانده
تحليل گر لغوي
(پارسر) جلوبندي كامپايلر
درخواست
نشانه بعدي
جدول نماد
موقعيت تجزيه كننده در مدل كامپايلر
صفحه: 401 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي
الف سطوح خطا
1- لغوي. مانند ديكته غلط شناسه ، كلمه كليدي يا عملگر
2- نحوي. مانند عبارت محاسباتي با پرانتزهاي نامتعادل
3- معنايي. مانند استفاده از عملگر با عملوندهاي ناسازگار
4- منطقي. مانند فراخواني بازگشتي بي نهايت
صفحه: 501 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي
ب- ويژگي اداره كننده خطاي نحوي
- توانايي گزارش حضور خطاها را با وضوح و با دقت
- پوشش هر خطا با سرعت كافي به جهت امكان آشكارسازي خطاهاي بعدي
- عدم كاهش بيش از حد سرعت پردازش برنامه هاي صحيح
صفحه: 601 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي
ج- استراتژي هاي پوشش خطاي نحوي
-Panic Mode
-Phrase level
-Error production
-Global correction
صفحه: 701 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي - Panic mode
ويژگي
- ساده ترين روش پوشش
- قابل استفاده اكثر روشهاي تجزيه
- وارد حلقه بي نهايت نمي شود.
روش كار
صرف نظر از يك نماد در هر مرحله تا زمان پيداشدن نشانه هماهنگ با زبان
صفحه: 801 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي - Phrase Level
- استفاده از تصحيح موضعي
ويژگي
- عدم ورود به حلقه بي نهايت با دقت در انتخاب جايگزيني
- ضعف در برخورد با خطاهاي اصلي قبل از نقطه تشخيص
- قادر به تصحيح هر رشته ورودي
روش كار
پيشوندي از باقيمانده ورودي را جايگزين رشته اي مي نمايد كه امكان ادامه تجزيه باشد.
صفحه: 901 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي - Error production
روش كار
اضافه نمودن ساختارهاي مولد خطا به زبان از قبل
تشخيص آنها در زمان تجزيه در رشته ورودي
صفحه: 011 اصول طراحي کامپايلرها گروه کامپيوتر
4-3 خطاي نحوي- Global Correction
روش كار
انتخاب الگوريتم هاي تصحيح خطا با قابليت ايجاد كمترين تغييرات در ورودي براي رفع خطا
رخ دادن حداقل تعداد درج ها، حذفها در رشته ورودي
صفحه: 111 اصول طراحي کامپايلرها گروه کامپيوتر
4-4 گرامر مستقل از متن
مجموعه متغيرها يا غير پايانه ها قوانين : اعضاي مجموعه
)V*(V UΣ
گرامر )G ( V , Σ , P , S اجزاي
عناصر پايانه عنصر شروع گرامر
ويژگي زبان
(اگر و تنها اگر S ( L
) A u ( A V , u ( U V +
صفحه: 211 اصول طراحي کامپايلرها گروه کامپيوتر
4-4-1 گرامر مستقل از متن - تعاريف
رشته ) w (V U يك فرم جمله ايست اگر يك
اشتقاق از . Sبه wوجود داشته باشد فرم جمله اي
رشته * wيك جمله است اگر يك
اشتقاق از Sبه wوجود داشته باشد جمله
زبان Gكه با ) L(Gنشان مي دهند، مجموعه زبان
{* }wاست.
صفحه: 311 اصول طراحي کامپايلرها گروه کامپيوتر
4- 4گرامر مستقل از متن نمونه اشتقاقهاي يك رشته
S AA
ababaa رشته
A AAA \ bA\ Ab\ a
S AA S AA S AA S AA
aA َ AAAA Aa aA
aAAA aAAA AAAa aAAA
abAAA abAAA AAbAa aAAa
abaAA abaAA AAbaa abAAa
ababAA ababAA AbAbaa abAbAa
ababaA ababaA Ababaa ababAa
ababaa ababaa ababaa ababaa
114 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال گرامرهاي مستقل از متن
S aSa \ aBa
S aSdd \A
S aSb \ aSbb B bB \ b
A bAc \ bc
S aS aB S abScB
B bB b B bB \b
115 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-5 عبارات باقاعده- داليل استفاده براي نحو زبان
1- عدم نياز به نمايش نوع قوي مانند گرامر براي توصيف قوانين ساده لغوي
زبان
2- امكان نمايش مختصرتر و قابل فهم تري براي نشانه ها نسبت به گرامر
3- ايجاد تحليل گرهاي لغوي كاراتر به صورت خودكار
4- راه مناسبي براي پيمانه سازي جلوبندي كامپايلر به دو بخش قابل مديريت
با تقسيم ساختار زبان به لغوي و غيرلغوي
صفحه: 611 اصول طراحي کامپايلرها گروه کامپيوتر
4-6 تجزيه- نوع باال به پايين
1- سعي در يافتن سمت چپ ترين اشتقاق براي رشته ورودي دارد.
2- سعي در ساختن درخت تجزيه براي رشته ورودي با شروع از ريشه
و ايجاد گره هاي درخت بصورت پيش ترتيب
1- گرامرهاي بدون عقبگرد )1( LL
انواع پارسرهاي باال به پايين
2- گرامرهاي با عقبگرد
صفحه: 711 اصول طراحي کامپايلرها گروه کامپيوتر
4-6 تجزيه- نوع باال به پايين
تجزيه كننده بازگشتي – كاهشي ( پيشگو)
تهيه مجموعه اي از پايانه هايي كه در هر قانون براي يك غير پايانه در
سمت راست ظاهر مي شوند.
بررسي دنباله رشته ورودي بر طبق مجموعه باال
بررسي باال با مقايسه نماد پيش نگر در ورودي با عناصر مجموعه باال
صفحه: 811 اصول طراحي کامپايلرها گروه کامپيوتر
4-6-1 تجزيه كننده پيشگو – پياده سازي
ايجاد نمودار انتقال
1- حذف بازگشتي چپ در گرامر در صورت وجود
2- ايجاد حال شروع و حالت نهايي براي گرامر
3- رسم يك مسير از حالت شروع به نهايي براي هر قانون به شكل AX1, X2,…,Xn
4- دادن برچسب به لبه ها يا يالهاي مسير به صورت X1,X2,…,Xn
صفحه: 911 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه كننده پيشگو- نمودار انتقال
E `TE
E` +TE` \
T `FT T `E مرحله 1
:E 0 1 2
T` * FT` \
F (E) \ id
T T `E
:`E 3 4 5 6 مرحله 2
F `T
:T 7 8 9 مرحله 3
صفحه: 021 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه كننده پيشگو- نمودار انتقال
T F `T
:`T 01 11 21 31 مرحله 4
( E ) مرحله 5
:F 41 51 61 71
id
صفحه: 121 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه پيشگو
S cAd دنباله ورودي cad
A ab \ a
S S S
c A d c A d c A d
a b a b
(الف) (ب) (پ)
صفحه: 221 اصول طراحي کامپايلرها گروه کامپيوتر
4-6-2 تجزيه كننده پيشگوي غير بازگشتي
بخشهاي يك تجزيه كننده غير بازگشتي
حاوي رشته ورودي براي تجزيه با عالمت $ در انتهاي آن ميانگير ورودي
دنباله اي از نمادهاي گرامر در هر لحظه براي تجزيه با $ پشته
در ته آن
جدول تجزيه
آرايه دو بعدي عناصر ] A،[A,aيك غير پايانه و aيك پايانه
دنباله تجزيه شده تا آن زمان دنباله خروجي
صفحه: 321 اصول طراحي کامپايلرها گروه کامپيوتر
4-6-2 تجزيه كننده پيشگوي غير بازگشتي
ورودي a + b $
اشاره گر
پشته
برنامه تجزيه كننده پيشگو خروجي
X
Y
Z
Mجدول تجزيه
$
صفحه: 421 اصول طراحي کامپايلرها گروه کامپيوتر
4-6-2 تجزيه غير بازگشتي پيشگو – عملكرد
1- اگر $ = X= aباشد توقف تجزيه كننده اعالم خاتمه موفق تجزيه
2- اگر $ X= a خروج Xاز پشته ، انتقال اشاره گر ورودي به
نماد بعدي در ورودي
3-اگر Xيك غير پايانه باشد مراجعه به وارده در جدول ][A , a
و جايگزيني قانون مناسب آن از جدول
صفحه: 521 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه كننده غير بازگشتي پيشگو
E TM
E TE`
M +TM \ \
E` +TE`
T FN
FT`
N * * FT` \
T` FN \
F (E) \ \ id
(E) id
F جدول تجزيه
غير پايانه id + * ( ) $
E E TE` E TE`
E` E` +TE` E` E`
T T FT` T FT`
T` T` T` * FT` T` T`
F F id F (E)
126 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه كننده غير بازگشتي پيشگو
$E Id + id * id$
$E`T Id + id * id$ E TE`
$E`T`F Id + id * id$ T FT`
$E`T`id Id + id * id$ F id
$E`T` +id * id$
$E` +id * id$
T`
$E`T +id * id$ E +TE`
$E`T Id * id$
$E`T``F Id * id$ T FT`
$E`T`id Id * id$ F id
$E`T` *id$
$E`T`F* *id$ T` * FT`
$E`T`F Id$
$E`T`id Id$ F id
$E`T` $
$E` $ T`
$ $ E`
127 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-7 مجموعه Followو First
First
اگر رشته كه aهر رشته اي از نمادهاي گرامري باشد، مجموعه پايانه هايي
رشته هاي مشتق شده ازآنها با aشروع مي شوند ، )first (aاست.
Follow
براي غير Aمجموعه اي از پايانهاست كه در هر شبه جمله بالفاصله بعد از آن هستند.
پايانه
صفحه: 821 اصول طراحي کامپايلرها گروه کامپيوتر
4-7-1 محاسبه )Follow ( A
1- $ در ) Follow (Sقرار داده مي شود كه نماد شروع گرامر است و $ نماد
انتهاي سمت راست رشته وروديست.
)First (F 2- اگر قانوني به صورت A EBFوجود دارد آنگاه هرچيزي در
بجز به مجموعه ) Follow (Bاضافه مي شود.
3- اگر قانونهايي بشكل A EBيا A EBFكه ) First (Fحاوي باشد (
) هر چيزي در مجموعه ) Follow(Aبه ) Follow (Bاضافه مي شود.
صفحه: 921 اصول طراحي کامپايلرها گروه کامپيوتر
4-7-1 محاسبه )First ( A
}{X 1- اگر Xپايانه باشد، ) First (Xبرابرست با
2- اگر X قانون گرامر باشد، به ) First (Xاضافه مي شود.
3- اگر Xغيرپايانه و X Y1Y2…Ynقانون گرامر، براي هر a ,iدر مجموعه
) First(Yiباشد و در تمام مجموعه هاي ) First ( Y1(…First )Ynقرار داشته
باشد، aبه مجموعه ) First (Xاضافه مي شود.
صفحه: 031 اصول طراحي کامپايلرها گروه کامپيوتر
First وFollow مثال مجموعه هاي
E TM
E TE`
M +TM \ \
E` +TE`
T FN
FT`
First (E) = First (T) = First (F) = { ( , id }
N * * FT` \
T` FN \
F (E) \ \ id
F (E) id
First (E`) = { + , }
First (T`) = { * , }
Follow (E) = Follow (E`) = { ) , $ }
Follow (T) = Follow (T`) = { + , ) , $ }
Follow (F) = { + , * , ) ,$ }
131 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-8 ايجاد جدول تجزيه
1- براي هر قانون از گرامر بصورت A aمراحل 2 و 3 تكرار شود.
در مجموعه ) A E ،First (Eبه ] M[A , aاضافه شود. a 2- براي هر پايانه
M[A 3- اگر در ) First (Eباشد، A aبراي هر پايانه bدر ) Follow (Aبه ], b
اضافه شود. اگر در ) First (Eو $ در ) Follow ( Aباشد، A aبه , M [ A
]$ اضافه شود.
صفحه: 231 اصول طراحي کامپايلرها گروه کامپيوتر
مثال جدول تجزيه
E `TE
E` +TE` \
T `FT
T` * FT` \
}First (TE`) = First (T) = { ( , id
F (E) \ id
غير پايانه id + * ( ) $
E `E TE `E TE
صفحه: 331 اصول طراحي کامپايلرها گروه کامپيوتر
4-9 شناسايي گرامر )1(LL
1- گرامري كه ابهام يا بازگشتي چپ ندارد.
2- اگر A E \ Fدو قانون از Gباشند براي هيچ پايانه اي مانند ،aهر دوي
Eو Fرشته هاي شروع شونده با aتوليد نمي كنند.
3- حداكثر يكي از Eو Fمي توانند رشته تهي توليد كنند.
)Follow ( A رشته اي شروع شونده با پايانه هاي مجموعه E،F 4- اگر
توليد نمي كند.
صفحه: 431 اصول طراحي کامپايلرها گروه کامپيوتر
LL (1) مثال گرامر
E TE`
E` +TE` \
T FT`
T` * FT` \
: است زيراLL (1) گرامر
F (E) \ id
First ( +TE`) = { + }, First ( ) , { } ( + ) =
First ( E` ) = { + , } , follow ( E` ) = { $ , ) } , { + , } { $ , ) } =
First ( *FT) = { * } , First ( ) = { } , { * } { } =
First ( T`) = { , * } , Follow ( T`) = { $ , ) , + } , { , * } { $ , ) + } =
First ((E)) { ( } , First ( id ) = { id } , { ( } { id } =
135 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال گرامر )1( LL
S iEtSF 1
Sa 2
F eS 3
FS 4
Eb 5 i t a e b $
S 1 2
F 4,3 4
E 5
گرامر )1( LLنيست.
صفحه: 631 اصول طراحي کامپايلرها گروه کامپيوتر
4-01 پوشش خطا در تجزيه پيشگو
نوع خطا
1- عدم تطابق پايانه موجود در باالي پشته با نماد ورودي بعدي
2- خالي بودن وارده جدول براي غير پايانه Aدر باالي پشته و پايانه
aبعنوان نماد ورودي بعدي
روش پوشش خطا
كنار گذاردن نمادهاي ورودي بعدي تا زمان ظاهر شدن شناسه اي
متعلق به مجموعه اي از شناسه هاي هماهنگ كننده
صفحه: 731 اصول طراحي کامپايلرها گروه کامپيوتر
4-01-1 انتخاب مجموعه هماهنگ كننده
گذاردن تمام نمادهاي ) Follow (Aدر مجموعه هماهنگ كننده غير مجموعه
پايانه و بررسي ورودي تا زمان ظاهر شدن يك عضو از آن
گذاردن مجموعه نمادهاي شروع كننده ساختارهاي سطح باالتر زبان به
همراه مجموعه هماهنگ كننده ساختارهاي سطوح پايين تر زبان مانند كلمات
كليدي به اضافه مجموعه Followها
گذاردن مجموعه ) First (Aبه مجموعه هماهنگ كننده غير پايانه A
قانونهاي توليد كننده غير پايانه تهي براي غير پايانه هاي قادر به اشتقاق
تهي
صفحه: 831 اصول طراحي کامپايلرها گروه کامپيوتر
مثال بروز خطا در تجزيه پيشگو
1- در صورت خالي بودن وارده جدول ، نماد ورودي حذف
2- در صورت ورودي ( synchاز مجموعه نشانه هاي هماهنگ كننده ) Follow
خروج غير پايانه باالي پشته براي امكان ادامه تجزيه
3- در صورت عدم تطابق نشانه باالي پشته با نماد ورودي ، خروج نشانه از
پشته
صفحه: 931 اصول طراحي کامپايلرها گروه کامپيوتر
مثال بروز خطا در تجزيه پيشگو
E `TE
رشته ورودي داراي خطاي )id + * id
E` +TE` \
T `FT
T` * FT` \
F (E) \ id
مرحله 1
غير پايانه id + * ( ) $
E `E TE `E TE
`E `E` +TE E` E`
T `T FT `T FT
`T T` `T` * FT T` T`
F F id )F (E
صفحه: 041 اصول طراحي کامپايلرها گروه کامپيوتر
مثال بروز خطا در تجزيه پيشگو
2 مرحله
غير پايانه id + * ( ) $
E E TE` E TE` synch synch
E` E` +TE` E` E`
T T FT` synch T FT` synch synch
T` T` T` * FT` T` T`
F F id synch synch F (E) synch synch
141 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال بروز خطا در تجزيه پيشگو
3 مرحله
$E )Id *+ id$ error , skip )
$E Id *+ id$ id is in First ( E)
$E`T` Id *+ id$
$E`T`F Id *+ id$
$E`T`id Id *+ id$
$E`T` *+ id$
$E`T`F* *+ id$
$E`T`F + id$ Error M [F, + ] = synch
$E`T` + id$ F has been poped
$E` + id$
$E`T+ + id$
$E`T id$
$E`T`F Id$
$E`T`id Id$
$E`T` $
$E` $
$ $
142 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-11 تجزيه باال به پايين – انتقال كاهش
سعي در ايجاد درخت تجزيه با شروع از برگها و رفتن به سمت ريشه = كاهش
جايگزيني يك زيررشته خاص منطبق با سمت راست يك قانون با نماد
سمت چپ همان قانون
صفحه: 341 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه باال به پايين – انتقال كاهش
دنباله ورودي abbcde
S aABe
A Abc \ b
B d
abbcde انتقال
aAbcde كاهش
aAde انتقال
aABe كاهش
S
S aABe aAde aAbcde اشتقاق abbcde
صفحه: 441 اصول طراحي کامپايلرها گروه کامپيوتر
4-11-1 تجزيه انتقال كاهش - دستگيره
زير رشته اي منطبق بر سمت راست يك قانون و ايجاد كننده يك كاهش
به غير پايانه سمت چپ آن قانون
ويژگي دستگيره
زير رشته اي كه با عمل كاهش با توانايي هدايت تجزيه كننده
به عنصر شروع گرامر
صفحه: 541 اصول طراحي کامپايلرها گروه کامپيوتر
مثال دستگيره
دنباله ورودي abbcde
abbcde انتقال
S aABe
aAbcde كاهش
A Abc \ b aAde انتقال
B d aABe كاهش
S
Ab
دستگيره ها َA Abc
Bd
صفحه: 641 اصول طراحي کامپايلرها گروه کامپيوتر
مثال دستگيره
(1) E E + E
گرامر (2) E E * E
) (3) E ( E
(4) E id
سمت راست ترين EE+E
اشتقاق مرحله 1
E+E*E
3 E + E * id
3 E + id2 * id
3 id1 + id2 * id
صفحه: 741 اصول طراحي کامپايلرها گروه کامپيوتر
مثال دستگيره
جمله دستگيره
3id1 + id2 * id 1id
3E + id2 * id 2id
دستگيره ها
3E + E * id 3id
E+E*E E*E
صفحه: 841 اصول طراحي کامپايلرها گروه کامپيوتر
4-11-1-1 دستگيره- هرس نمودن
توانايي توليد معكوس سمت راست ترين اشتقاق مزيت هرس نمودن
مراحل هرس نمودن
1- اگر Wجمله گرامر براي تجزيه باشد، آنگاه W = Ynشبه جمله
راست nام از سمت راست ترين اشتقاق نامشخص .
2- يافتن دستگيره 1- Bnدر1-Ynو كاهش آن تا
بدست آمدن شبه جمله راست 2-.Yn
3- توقف عمليات در صورت رسيدن به عنصر
شروع گرامر S
صفحه: 941 اصول طراحي کامپايلرها گروه کامپيوتر
مثال هرس نمودن دستگيره
(1) E E + E
(2) E E * E
3id1 + id2 * id
) (3) E ( E
(4) E id
شبه جمله راست دستگيره قانون كاهشي
E id
3id1 + id2 * id 1id
3E + id2 * id 2id E id
3E + E * id 3id E id
E+E*E E*E EE*E
E+E E+E EE+E
E
صفحه: 051 اصول طراحي کامپايلرها گروه کامپيوتر
4-11-2 مشكالت هرس نمودن دستگيره
1- تعيين زير رشته مناسب براي كاهش در يك شبه جمله راست
2- انتخاب قانون مناسب در موارد وجود دو يا بيشتر قانون با زير
رشته يكسان در سمت راست
صفحه: 151 اصول طراحي کامپايلرها گروه کامپيوتر
4-21 تجزيه انتقال كاهش با پشته
استفاده از پشته به منظور نگهداري نمادهاي گرامر
استفاده از ميانگير ورودي جهت نگهداري رشته مورد نظر براي تجزيه
1- انتقال صفر يا چند نماد به پشته توسط تجزيه كننده
روند تجزيه
2- ادامه مرحله 1 تا زمان پيدا شدن يك دستگيره در باالي پشته
3- كاهش دستگيره پيدا شده به سمت چپ قانون گرامري مناسب آن
صفحه: 251 اصول طراحي کامپايلرها گروه کامپيوتر
4-21-1 عمليات انتقال كاهش با پشته
انتقال نماد بعدي ورودي به باالي پشته انتقال
وجود انتهاي سمت راست دستگيره در باالي پشته و
كاهش
يافتن سمت چپ آن و تصميم گيري براي جايگزيني
اعالم تكميل موفقيت آميز عمل تجزيه پذيرش
تشخيص خطاي نحوي و فراخواني رويه پوشش خطا خطا
صفحه: 351 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه انتقال كاهش با پشته
(1) E E + E
گرامر (2) E E * E
) (3) E ( E
(4) E id
EE+E
E+E*E
رشته 3id1 + id2 * id
3 E + E * id
3 E + id2 * id
3 id1 + id2 * id
صفحه: 451 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه انتقال كاهش با پشته
پشته ورودي عمل
$ id1 + id2 * id3 $ Shift
$id1 + id2 * id3 $ Reduce by E id
$E + id2 * id3 $ Shift
$E + id2 * id3 $ Shift
$E + id2 * id3 $ Reduce by E id
$E + E * id3 $ Shift
$E + E * id3 4 Shift
$E + E * id3 $ Reduce by E id
$E+E*E $ Reduce by E E * E
$E+E $ Reduce E E + E
$E $ accept
155 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4- 31 تجزيه انتقال كاهش – پيشوند قابل وقوع
مجموعه پيشوندهاي شبه جمالت راست ظاهر شونده در
پشته يك تجزيه كننده انتقال كاهش
يا
پيشوندي از يك شبه جمله راست عبور نكننده از انتهاي
راست سمت راست ترين دستگيره آن شبه جمله
صفحه: 651 اصول طراحي کامپايلرها گروه کامپيوتر
4-41 تجزيه انتقال كاهش- تناقض ها
ترديد در عمل انتقال يا عمل كاهش در زمان تصميم
تناقض انتقال - كاهش
گيري براي تجزيه كننده
وجود چند قانون براي كاهش يك رشته در يك زمان تناقض كاهش كاهش
صفحه: 751 اصول طراحي کامپايلرها گروه کامپيوتر
4-41 تجزيه كننده عملگر اولويت
گرامر نوع عملگر
1- قوانين نداشته باشد.
2- در سمت راست قوانين توليد، هيچ كدام از
دو پايانه كنار هم نباشند.
صفحه: 851 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت – گرامر عملگر
E EAE \ ( E ) \ - E \ id وجود دو غير پايانه در سمت راست قانون
\ /\-\+ A
گرامر عملگر نيست
صفحه: 951 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-1 نقطه ضعفهاي روش عملگر اولويت
دشوار بودن اداره نمودن نشانه هايي مانند عالمت منها با دو اولويت متفاوت
( دوديي يا يگاني)
عدم اطمينان از نتيجه درست تجزيه به دليل رابطه نزديك بين گرامر زبان در حال تجزيه و
تجزيه كننده عملگر اولويت
قابليت تجزيه بر روي تنها رده كوچكي از گرامرها
صفحه: 061 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-2 عملگر اولويت – تعيين اولويتها
تعريف 3 رابطه اولويت مجزاي بين هر زوج از پايانه ها
مفهوم رابطه
اولويت aكمتر از bاست. a <. b
اولويت aو bيكسان است. a = b
اولويت aبيش از bاست. a.> b
صفحه: 161 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-2 عملگر اولويت روشهاي تعيين اولويت
1- استفاده از شركت پذيري و اولويت موجود بين خود عملگرها
در زبان مانند اولويت هاي زير
+ >. * *.< +,
2- ايجاد گرامر غير مبهمي براي زبان و درخت تجزيه آن با
قابليت انعكاس شركت پذيري و اولويت صحيح بين عناصر
پايانه در درخت
صفحه: 261 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت – تعيين اولويتها
E `TE
E` +TE` \
T `FT
T` * FT` \
F (E) \ id $ + * ( ) id
+ >. .< >. .< .< >.
* >. >. .< >. .< >.
( .< .< = .< .<
) >. >. >. >.
Id >. >. >. >.
$ .< .< .< = .<
صفحه: 361 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-3 استفاده از اولويت ها
1- قرار دادن روابط اولويت بين پايانه ها در رشته ورودي به تجزيه
2- قرار دادن عالمت $ ابتدا و انتهاي رشته ورودي به همراه
اولويت آن نسبت به اولين پايانه و آخرين پايانه رشته
3- حذف غير پايانه ها از جمله ورودي
>. 4- پويش از انتهاي چپ رشته تا رسيدن به اولين اولويت
صفحه: 461 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-3 استفاده از اولويت ها
5- پويش به عقب ( چپ ) از همان نقطه با پشت سرگذاردن هر = تا
رسيدن به .<
6- تعيين دستگيره شامل هر چيزي در سمت چپ اولين راست 5. در >.
و سمت <مرحله
صفحه: 561 اصول طراحي کامپايلرها گروه کامپيوتر
مثال استفاده از اولويت ها
id + id * id رشته ورودي به تجزيه
.$ >. $ <. Id .> + <. Id .> * <. id
زمان ديدن اولين >. از سمت چپ بين اولين idو + مرحله 1:
پويش به عقب ردشدن از روي = در صورت وجود برخورد با مرحله 2:
اولين . <
صفحه: 661 اصول طراحي کامپايلرها گروه کامپيوتر
مثال استفاده از اولويت ها
مرحله 3: دستگيره بين اولين >. و .< يعني اولين idسمت چپ و تبديل آن به E
مرحله 4: تشخيص ساير دستگيره هاي مشابه { 3 } id2 , idو باقيمانده دنباله
ورودي به شكل
$ >. * . < + .< $
مرحله 5: دستگيره بعدي بين + و * و انتهاي راست آن بين * و $ يعني E * Eو تبديل
به E
دستگيره بعدي بين + و $ يعني E + Eو تبديل به Eو پايان تجزيه انتقال مرحله6:
كاهش – عملگر اولويت
صفحه: 761 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-4 عملگر اولويت – اولويتهاي بديهي
1- اگر عملگر Aاولويت بيشتر از عملگر Bداشته باشد، روابط A . > Bو B <. A
بين آنها برقرار است.
2- اگر Aو Bعملگرهاي با اولويت يكسان باشند، اگر هر دو شركت پذير از راست هستند:
B <. A , A <. Bو پركت پذير از چپ :B .> A , A .> B
صفحه: 861 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-4 عملگر اولويت – اولويتهاي بديهي
3- براي تمام عملگرهاي مانند Aروابط زير برقرار است.
$ <. A $ >. A >. A ) >. ) A .< ( A
( .< A id .> A A <. id
4- روابط زير هميشه برقرارند:
)=( ( .< ( ( <. id
( .< $ >. id $ >. id )
$ <. id ) $ >. ) ) >.
صفحه: 961 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت- جدول اولويت
1 - ( توان ) باالترين اولويت و شركت پذير از
راست
2- * و / باالترين اولويت بعدي و شركت پذير از چپ فرضيات
3- + و – پايين ترين اولويت و شركت پذير از چپ
صفحه: 071 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت - جدول اولويت
$ ) ( + - * / id
+ >. >. .< .< .< .< .< >. >.
- >. >. .< .< .< .< .< >. >.
* >. >. .< .< .< >. >. >. >. جدول اولويت ها
/ >. >. .< .< .< >. >. >. >.
>. >. >. >. >. >. .< .< .<
Id >. >. >. >. >. >. >.
( .< .< .< .< = .< .< .<
) >. >. >. >. >. >. >.
$ .< .< .< .< .< .< .<
صفحه: 171 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-5 عملگر اولويت - توابع اولويت
دو تابع fو gبراي كدگذاري جدول اولويت براي
پارسر
a 1- ) f( a ) <. g ( bهر گاه <. b
2- ) f( a ) = g ( bهر گاه a = b
3- ) f( a ) .> g ( bهر گاه a .> b
صفحه: 271 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت - توابع اولويت
+ - * / ( ) id $
f 2 2 4 4 4 0 6 6 0 جدول اولويت
g 1 1 3 3 5 5 0 5 0
* < . Id ) f ( * ) < g( id
id .> id ) f ( id ) > g ( id
صفحه: 371 اصول طراحي کامپايلرها گروه کامپيوتر
مثال عملگر اولويت - گراف روابط اولويت
+ * Id $
f 2 4 4 0
g 1 3 5 0
)g (id )f (id
)*( f )*( g
)+( g )+( f
)$( f )$( g
صفحه: 471 اصول طراحي کامپايلرها گروه کامپيوتر
4-41-5 تجزيه عملگر اولويت- پوشش خطا
1- عدم وجود رابطه بين عنصر باالي پشته و
عنصر ورودي
انواع خطا
2- عدم تطابق مجموعه عناصر پيمايش شده در
پشته و آماده كاهش با هيچ كدام از قوانين
گرامر
در حالت اول: قرار گرفتن اشاره گرهايي به
پوشش خطا
توابع رفع خطا و فراخواني آنها هنگام وقوع
خطا
صفحه: 571 اصول طراحي کامپايلرها گروه کامپيوتر
4- 51 تجزيه كننده هاي LR
داليل پر طرفداربودن تجزيه كننده هاي LR
1- قابليت تشخيص ساختارهاي زبانهاي مستقل از متن
2- عمومي ترين روش تجزيه انتقال كاهش غير بازگشتي
3- توانايي تجزيه رده گرامرهاي قابل تجزيه پيش گو
4- سريعترين تشخيص خطاي نحوي با پويش چپ به راست
صفحه: 671 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-1 تجزيه -LRنقاط ضعف
1-كار زياد در ساخت آن براي گرامر زبان بشكل دستي
2- نيازمند ابزار مولد تجزيه كننده LRبراي ايجاد
صفحه: 771 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-2 تجزيه -LRانواع
ساده ترين
LRساده يا SLR
كمترين توانايي
قدرتمند ترين
جدول تجزيه متفاوت LRمتعارف يا CLR
گرانترين
قدرت متوسط LRپيش نگر
يا LALR
هزينه متوسط
كار كم براي ايجاد و قابليت تجزيه اكثر گرامرها
صفحه: 871 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-3 تجزيه - LRاجزاء
1a … ai b … an
a
. خروجي
. برنامه تجزيه
.
S
Action goto
$
صفحه: 971 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-4 تصميم گيري تجزيه LR
نشانه ورودي a
تصميم گيري الگوريتم در هر لحظه
عنصر باالي پشته )(S
رشته اي به شكل s0X1s1X2s2….Xmsmكه smدر
باالي پشته قرار دارد. عنصر پشته
يك نماد گرامر
يك حالت تجزيه
صفحه: 081 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-5 تجزيه – LRجدول تجزيه
تابع انتقالي ( gotoدريافت يك حالت و نماد و توليد
حالت جديد)
اجزاي جدول تجزيه
تابع عملكرد action
]action [sm , ai
action goto
a1 a2 … ai
m
جدول تجزيه
صفحه: 181 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-5 تجزيه – LRجدول تجزيه
مقادير مختلف موجود جدول براي ]action [ sm ,ai
error accept rn=reduce sn = shift
خطاي نحوي پايان موفق تجزيه انجام عمل كاهش با aروي پشته قرار داده
دستور nام پشته و بعد nروي پشته مي
رود
صفحه: 281 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-6 تجزيه – LRروال تجزيه
1- قرار دادن رشته ورودي wبه همراه عالمت $ در انتهاي آن در ميانگير
ورودي
2- گذاردن 0 sدر پشته به عنوان اوليه حالت
3- خواندن وارده جدول تجزيه براي ]$ , 0[s
4- اجراي عمل در نظر گرفته شده در جدول
][ shift , reduce, accept , error
صفحه: 381 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-6 تجزيه – LRروال تجزيه
5- اگر پپكربندي پشته در يك لحظه بصورت:
$ S0 X1 s1 X2 s2….Xm sm , ai ai+1 …. an
6- با خواندن aنماد ورودي جاري و sحالت باالي پشته مراجعه به جدول و
انجام يك مورد :
Shift , reduce
7- تبديل رشته روي پشته پس از Shift sبصورت :
$ S0 X1 s1 X2 s2…Xm sm ai s, ai+1…an
صفحه: 481 اصول طراحي کامپايلرها گروه کامپيوتر
4-51-6 تجزيه – LRروال تجزيه
8- تبديل رشته روي پشته پس از reduce Aبصورت:
$ S0 X1 s1 X2 s2… Xm-r sm-r A s , ai ai+1… an
9- اعالم پايان موفق تجزيه با ديدن acceptدر جدول
01- فراخواني رويه پوشش خطا با ديدن error
صفحه: 581 اصول طراحي کامپايلرها گروه کامپيوتر
LR مثال تجزيه
1EE+T action goto
2ET id + * ( ) $ E T F
3TT*F 0 s5 s4 1 2 3
4TF 1 s6 acc
5 F (E) 2 r2 s7 r2 r2
6 F id 3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
7 s5 s4 10
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
186 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
LR مثال تجزيه
id * id + id تجزيه
پشته ورودي عمل جدول
(1) 0 id * id + id $ s5
(2) 0 id 5 *id + id $ r5
(3) 0 F 3 *id + id $ r3
(4) 0 T 2 *id + id $ s7
(5) 0 T 2 * 7 *id + id $ s5
(6) 0 T 2 * 7 id 5 + id $ r5
(7) 0 T 2 * 7 F 10 + id $ r2
(8) 0 T 2 + id $ r1
(9) 0 E 1 + id $ s6
(10) 0 E 1 + 6 id $ s5
(11) 0 E 1 + 6 id 5 $ r5
(12) 0 E 1 + 6 F 3 $ r3
(13) 0 E 1 + 6 T 9 $ r9
(14) 0 E 1 $ acc
187 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-51-7 تفاوت گرامر LLو LR
گرامر )LL(K
توانايي تشخيص وقوع سمت راست يك رشته با ديدن تمام آنچه كه
از آن سمت راست مشتق شده ، با استفاده از Kنماد پيش نگر
گرامر )LR(K
توانايي تشخيص وقوع سمت راست تنها با ديدن اولين Kنماد از
آنچه توسط سمت راست آن مشتق شده
صفحه: 881 اصول طراحي کامپايلرها گروه کامپيوتر
4-61 تجزيه SLR
يك قلم براي LRقانوني از گرامر با يك نقطه در تعريف يك قلم
مكاني در سمت راست آن
مثال اقالم مختلف قانون
A XYZ A . XYZ
A X .YZ
A XY .Z
.A XYZ
صفحه: 981 اصول طراحي کامپايلرها گروه کامپيوتر
4-61 تجزيه SLRتقسيم بندي اقالم
شامل قلم اوليه S` Sو تمام اقالمي كه اقالم هسته
نقطه آنها در انتهاي چپ نيست.
اقالمي كه نقطه در انتهاي چپ است. اقالم غير هسته
صفحه: 091 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-1 تجزيه -SLRايجاد قلم
S AaAb
S BbBa مرحله1: تعيين يك نقطه شروع براي گرامر
A
B S` S
S AaAb
S BbBa
A
B
S` . S
S .AaAb
S .BbBa مرحله2: گذاردن نقطه در اولين مكان سمت
.A راست قانونها
.B
صفحه: 191 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-1 تجزيه -SLRايجاد قلم
مرحله3: گذاردن نقطه در مكانهاي بعدي در سمت راست قانونها
S Aa .Ab
. S` S S AaA .b
S Bb .Ba
S A .aAb S BbB .a
.A
S B .bBa
.B
. S AaAb
. S BbBa
صفحه: 291 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRگروه اقالم
گروه اقالم )0( LRيا گروه )0( LRمتعارف فراهم كننده مبناي
ساخت تجزيه كننده هاي SLR
ساخت به وسيله دو تابع closureو gotoبه
همراه گرامر افزوده
صفحه: 391 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRگروه اقالم
1- اضافه شدن هر قلم موجود در مجموعه اقالم Iبه مجموعه closure
تابع closure
2- اضافه شدن قلم B .Kدرصورت وجود A M .BNدرclosure
و وجود قانون B Kدر گرامر
صفحه: 491 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه - SLRگروه اقالم
E` E يك گروه قلم داده شده } ]I ={ [E` .E
EE+T\T
TT*F\T
F (E) \ id E` .E
E .E + T
E .T
= )Closure (I
T .T * F
T .F
)F .(E
F id
صفحه: 591 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRاقالم معتبر
يك قلم به صورت 2 A B1.Bبراي پيشوند قابل وقوع 1 MBمعتبر است اگر:
*
اشتقاقي به صورت S` M A W * M B1B2 Wوجود داشته باشد.
صفحه: 691 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه - SLRاقالم معتبر
E` E
EE+T\T
TT*F\T 1
F (E) \ id
يك پيشوند قابل وقوع *E+T
4
كه پس از خواندن آن رفتن به حالت 7I
T T * .F 2
اقالم معتبر براي 3 )I7: F .(E
F .id
صفحه: 791 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRگروه اقالم
مجموعه closureبر روي مجموعه ] [A Q X Kبا
شرط وجود ] A [ Q . X Kدر . I
يا تابع
) goto(I , X
مجموعه اي از اقالم معتبر براي پيشوند قابل وقوع R Xبا
وجود مجموعه اقالم معتبر براي Rدر . I
نماد مجموعه
گرامر اقالم
صفحه: 891 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه - SLRگروه اقالم
E` E گروه قلم داده شده } ]I ={ [E` E.] , [ E` E. + T
EE+T\T
TT*F\T
F (E) \ id
EE+.T
T .T * F
= )+ , goto (I T .F
)F .(E
F .id
صفحه: 991 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRايجادگروه اقالم)0(LR
1- گذاردن }] closure { [ S` .Sدر مجموعه گروه C
2- براي هر مجموعه اقالم Iدر Cو هر نماد مانند Xانجام بده:
2- 1- اگر ) goto ( I , Xتهي نيست و در Cنيست انجام بده:
2-1-1- ) goto ( I , Xرا به Cاضافه كن.
عقبگرد، تا زماني كه هيچ
مجموعه باي اضافه شدن
نمانده
صفحه: 002 اصول طراحي کامپايلرها گروه کامپيوتر
- ايجادگروه اقالمSLR مثال تجزيه
E` .E
E T.
I2:
E .E + T E` E
T T. * F
EE+T\T
E .T
I0: TT*F\T
I3: T F.
T .T * F F (E) \ id
T .F F (.E)
F .(E) E .E + T
F .id E .T
I4: I5: F id.
T .T * F
E` E. T .F
I1:
E E. + T F .(E)
F .id
201 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
- ايجادگروه اقالمSLR مثال تجزيه
E E + .T
E` E
I6: T .T * F I8:
F (E.)
EE+T\T
T .F E E. + T TT*F\T
F .(E) F (E) \ id
F .id
I9: E E + T.
T T. * F
I11: F (E).
T T * .F
I7: F .(E) I10: T T * F.
F .id
202 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
- ايجادگروه اقالمSLR مثال تجزيه
S` S I3: S R. I7: L *R.
S L=R \ R
L * R \ id
RL I4: L *.R I8: R L.
I0: S` .S
I5: L id. I9: S L=R.
I1: S` S.
I2: R L.=R I6: S L=.R
R L.
203 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRايجاد جدول تجزيه
1- ايجاد گروه مجموعه هاي اقالم براي گرامر افزوده ` ( Gبا يك نقطه شروع مانند `) S
بصورت { C = { I0 , I1 ,…In
2- ساختن حالت iاز ( Iiمانند 2 ،)Iتعيين actionهاي تجزيه براي حالت iبصورت زير:
الف- action [i , a] = shift jدر صورت وجود ][A Q .aK
در Iiو goto (Ii , a )=Ij
ب- قرار گرفتن action [i , a] = reduce A Qبراي تمام
پايانه هاي aدر )` Follow (A =Sصورت وجود ]. [A Qدر Ii
پ- قرار گرفتن action [i , $] =accept
صورت وجود ]. [S` Sدر Ii
صفحه: 402 اصول طراحي کامپايلرها گروه کامپيوتر
4-61-2 تجزيه - SLRايجاد جدول تجزيه
3 - ايجاد تغيير حالتهاي gotoبراي حالت iو براي تمام غير پايانه هاي Aبا استفاده
از قانون : اگر goto ( Ii , A ) =Ijآنگاه goto ( I , A ) = j
4– گذاردن errorبراي تمام ورودي هاي تعريف نشده با قوانين 2 و 3 الگوريتم
5 - ايجاد حالت اوليه تجزيه كننده با استفاده از مجموعه اقالم حاوي ][S` .S
صفحه: 502 اصول طراحي کامپايلرها گروه کامپيوتر
- ايجاد جدول تجزيهSLR مثال تجزيه
E` .E
E` E
E .E + T 1 مرحله
EE+T\T
TT*F\T I0: E .T no action
F (E) \ id
T .T * F
T .F
action [ 0 , ( ] = shift 4
F .(E)
action [ 0 , id] = shift 5
F .id
E` E. action [ 1, $ ] = accept 2 مرحله
I1:
E E. + T action [ 1 , + ] = shift 6
206 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه - SLRايجاد جدول تجزيه
} ) ,+ , $ { = )Follow (E مرحله 3
action [ 2 , $ ] = action [ 2 , + ]=action
.E T [ 2 , ) ] = reduce E T
:2I
T T. * F 7 action [ 2 , * ] = shift
.
.
ادامه مراحل مطابق نمونه ها.
.
صفحه: 702 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRتعريف قلم
[A ]Q.K , a
شكل عمومي يك قلم كه A QKيك قانون در
گرامر و aيك پايانه يا عالمت انتهاي سمت راست
رشته ورودي )$( .
عملكرد
اعالم كاهش با Qدر زمان مشاهده aبه عنوان
نماد ورودي بعدي
صفحه: 802 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRپيشوند قابل وقوع
شرايط قلم معتبر ] [A Q.K , aبراي يك پيشوند قابل وقوع y
* *
1- وجود اشتقاق S &AW &QKWكه:
y = &Qو
يا aاولين نماد Wيا Wبرابر تهي و a
برابر $
صفحه: 902 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRايجاد مجموعه اقالم)1(LR
محاسبه closure
1- براي هر قلم مثل ] [A Q.BK , aدر مجموعه Iانجام بده :
براي قانونهاي مانند B yدر گرامر و هر پايانه مانند bدر ):First (K
اگر قلم ] [B .y , bدر Iنيست آنرا اضافه كن
برگشت به مرحله 1
اگر قلمي باقيمانده
صفحه: 012 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRايجاد مجموعه اقالم
محاسبه goto
Jرا مساوي مجموعه قلمهاي ] [A QX.K , aكه در Iموجودند، در نظر بگير
) closure ( Jرا برگردان.
صفحه: 112 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRايجاد مجموعه اقالم
محاسبه )`item (G
} )} $ , C= { closure ( { S` .Sقرار ده و تكرار كن :
براي هر مجموعه از اقالم Iدر Cو هر نماد گرامر مانند :X
اگر ) goto ( I , Xتهي نبوده و در Cنيست انجام بده:
) goto ( I , Xرا به Cاضافه كن.
برگشت
اگر قلمي
باقيمانده
صفحه: 212 اصول طراحي کامپايلرها گروه کامپيوتر
- ايجاد مجموعه اقالمCLR مثال تجزيه
S` S
S CC
C cC \d
S C.C , $
I2
C .cC , $
S` .S , $ I4 C d. , c \ d
C .d , $
I0 S .CC , $
C .cC , c \ d
C .d , c \ d I5 S CC. , $
C c.C , c \ d
I3 C .cC , c \ d
I1 S` S. , $ C .d , c \ d
213 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه -CLRايجاد مجموعه اقالم
$ , C c.C
6I $ , C .cC 9I $ , .C cC
$ , C .d
7I $ , .C d
خاتمه كار بدليل نتيجه ندادن ساير اقالم.
8I C cC. , c \ d
صفحه: 412 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه -CLRايجاد مجموعه اقالم
S
0I 1I گراف gotoبراي مثال
C C
2I 5I
c
c C
6I 9I
d
d
7I
c
c C
3I 8I
d
d
4I
صفحه: 512 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRساخت جدول تجزيه
1- ساخت گروه مجموعه هاي اقالم به صورت { C = { I0 , I1 , …, Inبراي `G
2- ايجاد حالت iاز تجزيه كننده با استفاده از Iو مقداردهي بخش actionبصورت زير:
الف- action [ I , a ] = shift jدر صورت وجود ] [ A Q.aK , bدر
Iiو goto(Ii , a) = Ij
action [ I , a ] = reduce Aدرصورت وجود ][A Q. , a ب- a
در Iiو `A = S
صفحه: 612 اصول طراحي کامپايلرها گروه کامپيوتر
4-71 تجزيه -CLRساخت جدول تجزيه
پ- action [ i , $]= acceptدر صورت وجود ]$ , . [S` Sدر Ii
3- goto ( i , a) = jاگر goto ( Ii , A ) = Ij
4- قرار گرفتن errorبراي تمام ورودي هاي تعريف نشده با قوانين 2 و3 الگوريتم
قرار دادن حالت اوليه تجزيه كننده مساوي حالت بدست آمده از
مجموعه حاوي ]$ , [S` .S
صفحه: 712 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه -CLRساخت جدول تجزيه
action goto
1 S` S c d $ S C
2 S CC 0 3s 4s 1 2
3 C cC \d 1 acc
2 6s 7s 5
3 3s 4s 8
4 3r 3r
5 1r
6 6s 7s 9
7 3r
8 2r 2r
9 2r
صفحه: 812 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRساخت جدول تجزيه
1- ايجاد گروه مجموعه هاي اقالم بصورت {C= { I0 , I1 , … In
2- پيدا كردن تمام مجموعه هايي با قلم هسته يكسان در بين قلمهاي موجود
3- ايجاد مجموعه نتايج اقالم موجود بصورت {C= { J0 , J1 , …Jn
و محاسبه action
الف- action [ I , a ] = shift jدر صورت وجود ] [ A Q.aK , bدر
Iiو goto(Ii , a) = Ij
صفحه: 912 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRساخت جدول تجزيه
ب- action [ I , a ] = reduce A aدرصورت وجود ][A Q. , a
در Iiو `A = S
پ- action [ i , $]= acceptدر صورت وجود ]$ , . [S` Sدر Ii
4- ساخت جداول gotoبصورت زير:
الف اگر Jاجتماع يك يا چند مجموعه اقالم ( ) I0 I1…Ikباشد، آنگاه قلمهاي هسته
(goto ( I1,X), goto (I2,X(,…goto )Ik,X
مشابه هستند.
صفحه: 022 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRساخت جدول تجزيه
ب اگر Kاجتماع تمام مجموعه اقالم ( ) I0 I1…Ikباشد كه دراي قلمهاي هسته
مانند ) goto(I1, Xهستند، goto (J,X)=X
صفحه: 122 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه -LALRساخت جدول تجزيه
1 S` S
2 S CC ادغام مجموعه هاي اقالم و جايگزين شدن با
3 C cC \d
اجتماعشان
6I3 , I 7I4 , I 9I8 , I
$ \ C c.C , c \ d $ \ C d. , c\ d $ \ C cC. , c \ d
$ \ C .cC, c \ d
$ \ C .d , c \ d
صفحه: 222 اصول طراحي کامپايلرها گروه کامپيوتر
مثال تجزيه -LALRساخت جدول تجزيه
action goto
c d $ S C
0 63s 74s 1 2
1 acc
2 63s 74s 5
63 63s 74s 98
74 3r 3r 3r
5 1r
98 2r 2r 2r
صفحه: 322 اصول طراحي کامپايلرها گروه کامپيوتر
مثال پوشش خطا در تجزيه LRو LALR
برخورد با خطا در تجزيه LR
40c3c3d
ورودي داراي خطاي $ccd
action goto
پشته [ 4, $ ]= e
آشكارسازي خطا
تشخيص خطا در يك مرحله
صفحه: 422 اصول طراحي کامپايلرها گروه کامپيوتر
مثال پوشش خطا در تجزيه LRو LALR
74 0 c 36 c 36 d برخورد با خطا در تجزيه LALR
action goto ورودي داراي خطاي $ccd
پشته 3[47,$]= r
Cd 98 0 c 36 c 36 C
2[89,$]=r
.C cC
98 0 c 36 C
آشكارسازي خطا 20C .…
تشخيص خطا پس از چند كاهش
صفحه: 522 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRساخت جدول تجزيه بهينه
چند اصالح در الگوريتم ساخت جدول تجزيه
1- نشان دادن مجموعه اي از اقالم Iبا هسته آن
2- بدست آوردن بخش تابع actionتنها بوسيله هسته
3- نحوه محاسبه تغيير حالتهاي gotoبا استفاده از هسته
صفحه: 622 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRتعيين پيش نگرها
1- براي هر قلم مانند B y.Vدر مجموعه هسته يا Kانجام بده:
2-)}]# , J` := closure ({[B y.v
#=a 3- اگر ] [A M.XN , aدر` Jنبوده و
4- توليد نماد پيش نگر aبراي قلم A MX.Nدر )goto ( I , X
صفحه: 722 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 تجزيه -LALRتعيين پيش نگرها
5 -اگر ]# , [A M.XNدر مجموعه ` Jنيست، پيش نگرها
از B y.vدر مجموعه Iبه A MX.Nدر ) goto ( I , Xانتشار
مي يابند.
صفحه: 822 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 -LALRمحاسبه هسته هاي گروه اقالم
1- ساختن هسته اقالم LRبخش تجزيه )LR
2-اجراي الگوريتم تعيين پيش نگر بر روي هسته هر
مجموعه از اقالم LRو نماد گرامرX
3- تشكيل و مقداردهي جدول معين كننده پيش نگرها
كه براي هر قلم هسته در هر مجموعه اقالم
4- تكرار چند گذر بر روي هر مجموعه اقالم
صفحه: 922 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 -LALRمحاسبه هسته هاي گروه اقالم
5- مراجعه به آن دسته اقالم هسته كه iپيش نگرهاي خود
را منتشر مي سازد، هنگام مشاهده هر قلم.
6- استفاده از اطالعات ثبت شده توسط مرحله 2 و اضافه
نمودن مجموعه جاري پيش نگرها براي iبه پيش نگرهايي
مرحله قبل
7- تكرار مرحله 4-6
صفحه: 032 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRمحاسبه هسته هاي گروه اقالم
S` S
مرحله 1 : بدست آوردن اقالم LR
S L=R \ R
.I3: S R
L * R \ id
:7I .L *R
RL
I4: L *.R
:8I .R L
I0: S` .S
.I1: S` S .I5: L id
:9I .S L=R
I2: R L.=R
I6: S L=.R
.R L
صفحه: 132 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRمحاسبه هسته هاي گروه اقالم
مرحله 2 : اجراي الگوريتم محاسبه پيش
نگرها
# , S .S
# , S .L=R
# , S .R
)}]# , Closure ( {[S` .S = \ # , L .*R
= \ # , L .id
# , R .L
صفحه: 232 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRمحاسبه هسته هاي گروه اقالم
مرحله 3 : انتشار پيش نگرها در بين اقالم هسته
از به
:0I S` .S :1I .S` S
:2I R L.=R
.R L
:3I .S R
:4I L *.R
:5I .L id
:2I R L.=R I6: S L=.R
صفحه: 332 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRمحاسبه هسته هاي گروه اقالم
از به
:4I L *.R :4I L *.R
:5I .L id
:7I .L *R
:8I .R L
I6: S L=.R :4I L *.R
:5I .L id
:8I .R L
.I9: S L=R
صفحه: 432 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRمحاسبه هسته هاي گروه اقالم
مرحله 4 : مقداردهي جدول پيش نگرها و انجام گذرها
پيش نگرها
مجموعه قلم INIT 1PASS 2PASS 3PASS
I0: S` .S $ $ $ $
.I1: S` S $ $ $
I2: R L.=R $ $ $
:2I .R L $ $ $
:3I .S R $ $ $
:4I L *.R = $= $= $=
:5I .L id = $= $= $=
:6I S L=.R $ $
:7I .L *R = $= $=
:8I .R L = $= $=
:9I .S L=R $
صفحه: 532 اصول طراحي کامپايلرها گروه کامپيوتر
4-81 -LALRفشرده سازي جدول
مشابه بودن سطرهاي زيادي از جدول action
فشرده سازي جدول action
فشرده سازي فيلد actionو ايجاد يك ليست حالت براي آن
صفحه: 632 اصول طراحي کامپايلرها گروه کامپيوتر
- فشرده سازي جدولLALR مثال
1EE+T action goto
2ET id + * ( ) $ E T F
3TT*F 0 s5 s4 1 2 3
4TF 1 s6 acc
5 F (E) 2 r2 s7 r2 r2
6 F id 3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
1 مرحله 7 s5 s4 10
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
237 :صفحه اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRفشرده سازي جدول
مرحله 2
نماد عمل
تبديل به مساوي بودن بخش actionبراي
Id 5s
حالت هاي 7,6,4,0
( 4s
any error
نماد عمل تبديل به ليست مشابهي براي حالت 1
+ 6s
$ acc
any error
صفحه: 832 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRفشرده سازي جدول
نماد عمل مرحله 3
تبديل به
* 7s
جايگزيني وارده هاي خطا در حالت 2
any 2r
نماد عمل تبديل به جايگزيني وارده هاي خطاي حالت 3
any 4r
مساوي بودن بخش actionبراي
حالت هاي 11,01,5 و ادغام آنها
صفحه: 932 اصول طراحي کامپايلرها گروه کامپيوتر
مثال -LALRفشرده سازي جدول
مرحله 4
نماد عمل
* 6s تبديل به جايگزيني وارده هاي حالت 8
) 11s
any error
تبديل به
نماد عمل جايگزيني وارده هاي حالت 9
* 7s
any 1r
صفحه: 042 اصول طراحي کامپايلرها گروه کامپيوتر
4-91 وقوع خطا در تجزيه LR
تشخيص خطا تنها با مراجعه به جدول action
اعالم خطا به محض نيافتن ادامه مناسب براي ورودي در حال پويش
عدم كاهش دنباله روي پشته
عدم ورود نماد ايجاد كننده خطا به پشته
صفحه: 142 اصول طراحي کامپايلرها گروه کامپيوتر
4-02 پويش خطا در تجزيه LR
روش panic mode
1- پويش پشته به پايين تا يافتن حالت sبا gotoبا پايانه خاص A
2- صرف نظر از يك يا چند نماد ورودي تا يافتن نماد دقيقا مناسب براي A
3- انتقال حالت ] goto [s , Aبه پشته و ادامه تجزيه
صفحه: 242 اصول طراحي کامپايلرها گروه کامپيوتر
4-02 پويش خطا در تجزيه LR
روش Phrase level
1- آزمايش هر وارده خطا در جدول تجزيه
2- تصميم گيري در مرورد منشاء بروز خطا
3- ايجاد رويه پوششي مناسب براي خطا
صفحه: 342 اصول طراحي کامپايلرها گروه کامپيوتر
4-12 توليد كننده تجزيه كننده - Yacc
روش ايجاد مترجم توسط Yacc
مشخصه
:translate.y y.tab.c 1- آماده شدن پرونده اي حاوي
كامپايلر Yacc
مشخصه مترجم براي Yacc
2- تبديل محتواي پرونده به
y.tab.c
كامپايلر C
a.out برنامه در زبان C
3- كامپايل برنامه توليدي همراه
ورودي خروجي كتابخانه برنامه تجزيه LR
a.out
(تجزيه كننده)
4- خروجي: برنامه تجزيه كننده
صفحه: 442 اصول طراحي کامپايلرها گروه کامپيوتر
4-12-1 - Yaccاجزاي برنامه
اعالن ها
قوانين ترجمه بخش هاي برنامه مبدا Yacc
روالهاي حامي c
اعالن ها
%%
قوانين ترجمه ترتيب در متن برنامه مبدا Yacc
%%
روالهاي حاميc
صفحه: 542 اصول طراحي کامپايلرها گروه کامپيوتر
4-12-1 - Yaccاعالن
اعالن هاي معمول در cو
محصور بين {% , }% اعالن
لغات موقت
بخش اعالن برنامه
اعالن نشانه هاي گرامر
صفحه: 642 اصول طراحي کامپايلرها گروه کامپيوتر
4-12-2 - Yaccقوانين ترجمه
بخش قوانين ترجمه بالفاصله پس از %%
عمل معنايي مولد يا قانون
> سمت چپ < }عمل معنايي 1{ > انتخاب 1< :
} عمل معنايي 2{ > انتخاب 2< :
}عمل معنايي 3 { > انتخاب 3< :
.
.
.
صفحه: 742 اصول طراحي کامپايلرها گروه کامپيوتر
Get documents about "