1 / 247

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

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

lise
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. اصول طراحي کامپايلر دانشگاه پيام نور تهيه کننده: سيده فاطمه نوراني گروه: کامپيوتر

  2. شناسنامه منبع • عنوان منبع: کامپايلرها • مترجم: دلداري • انتشارات: باغاني (خراسان) • منبع اصلي: Compilers: Principles, Techniques, and Tools

  3. جايگاه درس در رشته کامپيوتر • ضرورت اين درس: • ضرورت نياز به زبانهای سطح بالا • ضرورت ترجمه برنامه های نوشته شده با زبان سطح بالا به برنامه به زبان ماشين • تنوع زبانهای برنامه نويسی سطح بالا • دروس پيش نياز: نظريه زبانها و ماشين، طراحی و پياده سازی زبانها • نوع درس: اجباري • تعدادکل ساعات تدريس:30 • تعداد جلسات تدريس:10

  4. فصل اول: مقدمه اي بر کامپايلر • اهداف رفتاري: • دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: • برنامه هاي تحليل کننده • آشنايي با بخش تحليل و بخش سنتز کامپايلر • ابزارهای ساخت کامپايلر

  5. 1-1 نمونه اي از برنامه هاي تحليل کننده • ويرايشگرهاي ساختار • چاپگرهاي pretty printer • بررسي کننده هاي ايستا • مفسرها • شکل دهنده هاي متن • کامپايلرهاي سيليسيومي • مفسرهاي پرس و جو

  6. 1-2 تعريف كامپايلر 1- ترجمه برنامه از زبان مبدا به برنامه معادل دز زبان مياني مانند اسمبلي 2- گزارش وجود خطاها را در برنامه مبدا به كاربر. کامپايلر «تحليل+ سنتز» برنامه مبدأ برنامه مقصد پيغام خطا

  7. 1-3 طبقه بندي كامپايلرها دسته بندي كامپايلرها بر اساس چگونگي ساخت و عمليات: • تك گذره • چند گذره • اشكال زدا و Load-and-go • بهينه ساز

  8. 1-4 عمليات كامپايلر تجزيه برنامه مبدا به اجزاي تشكيل دهنده اش بخش تحليل توليد كد مياني از برنامه مبدا تبديل كد مياني به برنامه مقصد در زبان ديگر بخش سنتز نياز به بيشترين روشهاي خاص

  9. 1-5 سيستم پردازش زبان اجزاي سيستم • پيش پردازشگر • كامپايلر • اسمبلر • باركننده و ويرايشگر الحاق

  10. 1-5-1پيش پردازشگر • جمع آوري ماژولهاي برنامه مبدا موجود در فايلهاي جداگانه • تبديل بخشهاي خلاصه شده بنام درشت دستورات به احكام زبان مبدا

  11. 1-5-2 ارتباطات در سيستم پردازش زبان اسكلت برنامه مبدا پيش پردازشگر برنامه مبدا كامپايلر برنامه اسمبلي مقصد اسمبلر كد ماشين جابجاپذير كتابخانه فايل هاي مقصد جابجاپذير باركننده / ويرايشگر الحاق كد ماشين

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

  13. 1-7 مراحل كامپايل 1- تحليل لغوي 2- تحليل نحوي 3- تحليل معنايي جلوبندي( گروه فازهاي متوالي وابسته به زبان مبدا) 4- توليد كد مياني 5- بهينه سازي كد 6- توليد كد نهايي عقب بندي( گروه فازهاي متولي وابسته به زبان مقصد)

  14. 1-7-1 نمودار مراحل كامپايل تحليل گر لغوي تحليل گر نحوي تحليل گر معنايي مدير جدول نماد اداره كننده خطا توليد كننده كد مياني بهينه ساز كد توليدكننده كد نهايي

  15. 1-7-2 مراحل کامپايلر- تحليل گر لغوي مرور متن برنامه به صورت حرف به حرف تبديل آنها به نشانه ها ( كلمات كليدي، عملگر، جداكننده، ثوابت و شناسه)

  16. 1-7-2 مراحل كامپايل- تحليل گر نحوي بررسي خروجي تحليل لغوي ساخت درخت تجزيه از نشانه ها

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

  18. 1-7-2 مراحل كامپايل - توليد كد مياني خواندن برنامه ورودي تبديل به برنامه اي در زبان مياني مانند اسمبلي

  19. 1-7-2 مراحل كامپايل - بهينه ساز كد بهينه كردن كد مياني ( حذف متغيرهاي مياني غير ضروري) سرعت بخشيدن به توليد كد نهايي

  20. 1-7-2 مراحل كامپايل - توليد كننده كد نهايي تبديل كد مياني بهينه به كد جابجاپذير يا اسمبلي تعيين مكانهاي حافظه براي متغيرهاي برنامه انتساب متغيرها به ثبات هاي ماشين

  21. 1-7-2 مراحل كامپايل - مديريت جدول نماد تعريف ساختمان داده اي شامل ركورد براي شناسه و ميدانهايي براي صفات أن هدف فراهم كردن شناسايي سريع ركورد شناسه بمنظور ذخيره و بازيابي داده هايش

  22. مثال از مراحل كامپايل: عبارت 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 Id1:= id2 + tem1 Into real id3 id3 50 توليد كد نهايي 50 Mov id, R2 Mul 50.0 , R2 Mov R1, id1 Mov id2 , R1 Add R2, R1

  23. 1-8 ابزارهاي ساخت كامپايلر • مولدهاي تجزيه كننده • توليد كننده هاي پويشگر • موتورهاي ترجمه نحوگرا • مولدهاي كد خودكار • موتورهاي جريان داده

  24. فصل دوم : نحو زبان و تجزيه • اهداف رفتاري: • دانشجو پس از مطالعه اين فصل با مفاهيم زير آشنا خواهد شد: • گرامر • اشتقاق و تجزيه • تعريف نحوگرا • درخت نحوی • تجزيه بالا به پايين و پايين به بالا • ترجمه

  25. 2-1 گرامر تعريف گرامر: روش ساخت رشته هايي متشكل از نمادها کاربرد وسيله تشخيص عضويت يك رشته در زبان مشخص كننده ساختار يك زبان

  26. 2-2 تعريف رياضي گرامر گرامر 4 گانه{N, T, S, P} = G N= مجموعه غير پايانه ها = T مجموعه پايانه ها S= عضو شروع P= مجموعه قوانين توليد رشته هاي زبان

  27. مثال از يك گرامر N = { E, F } T = { +, * , / ,id } S = E P = { E  F * id , F  F / E , F  F + F } رشته توليدي نمونه id * id+ id

  28. 2-3 اشتقاق فرآيند توليد رشته از گرامر با شروع از عنصر ابتداي گرامر و استفاده از قوانين. از چپ: در هر قدم انجام جايگزيني روي سمت چپ ترين غيرپايانه انواع اشتقاق از راست:در هر قدم انجام جايگزيني روي سمت راست ترين غيرپايانه

  29. مثال از اشتقاق 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

  30. 2-3-1 درخت تجزيه درخت تجزيه نشان دهنده چگونگي اشتقاق رشته اي از زبان از نماد شروع گرامر ساخت درخت تجزيه - S ريشه درخت فرزندان آنXYZ گره اي در درخت و A=A  XYZقانون فرزندان آنX ,a گره اي در درخت و A=A  Xaقانون پايانه ها ( حروف كوچك) تنها در برگها ديده مي شوند.

  31. 2-3-2 درخت اشتقاق درخت تجزيه اي نشان دهنده مراحل اشتقاق بكار رفته (راست يا چپ) E مثال E E + id + id * id id E E * id id

  32. 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

  33. 2-5 نشان گذاري پسوندي نشان گذاري يك عبارت مانند E 1- اگر E متغير و يا ثابت باشد نشان گذاري آن خودش مي شود. 2- اگر E عبارتي بشكل E1 op E2 باشد كه Op عملگر دودويي است نشان گذاري آن عبارتست از F1 F2 Op كه F1, F2 نشان گذاري E1 , E2 هستند. 3- اگر E عبارتي بشكل (E1)باشد، نشان گذاري براي E1 همان نشان گذاري براي E مي باشد. 9-(5+2) 952+ -

  34. 2-6 تعريف نحو گرا • كاربرد براي ترجمه ساختارهاي زبان. • ترجمه ساختار را بر حسب صفات مربوط به مولفه هاي نحوي • تعيين نوع ساختار، مكان اولين دستور توليد شده در برنامه هدف يا تعداد دستورات براي كامپايلر

  35. 2-6-1 تعريف نحوي جهت دار • هر نماد در گرامر مجموعه اي از صفات دارد. • در هر مولد يا قانون گرامر مجموعه اي از قواعد معنايي براي محاسبه مقادير صفات نمادها وجود دارد. گرامر و مجموعه اي از قواعد معنايي وابسته به آن صفات و محاسبه آنها

  36. 2-7 ترجمه ساختن درخت ترجمه: الف( ساختن درخت تجزيه براي ورودي ب) اگر گره n در درخت تجزيه با نماد x از گرامر متناظر باشد، x.a مقدار صفت a از نماد x در آن گره است. ج) مقدارx.a در گره n با استفاده از قواعد معنايي براي صفت a همراه با قانون گرامري استفاده شده درگره n محاسبه مي شود.

  37. مثال از ترجمه قانون قواعد معنايي 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 term.t := , 0, term 1 term.t := , 1, ….. ….. term 9 term.t := , 9, تعريف نحوگرا براي ترجمه عبارات ميانوندي به عبارت معادل پسوندي

  38. 2- 7-1درخت نحوي expr.t = 95-2+ expr.t = 95- term.t = 2 expr.t = 9 term.t = 5 term.t = 9 - 9 5 + 2

  39. 2-7-2 انواع درخت نحوي درخت نحو مجرد هر گره نماينده يك عملگر و فرزندان آن عملوند آن درخت نحو واقعي درخت تجزيه اي كه عملگرها خود فرزند محسوب مي شوند.

  40. 2-8 الگوي ترجمه گرامر مستقل از متني كه قطعه برنامه هايي كه عمليات معنايي ناميده مي شوند در سمت راست قوانين آن اضافه شده اند. تفاوت با ترجمه نحوگرا نمايش ترتيب ارزشيابي قوانين بطور صريح.

  41. 2-8-1 درخت توليد شده براي الگوي ترجمه expr طريقه ساخت درخت expr1 + term {print ( ,+, ) } يك برگ اضافي ساخته شده براي عمل معني 1- ساختن فرزند اضافي براي درخت 2- متصل نمودن اين فرزند به گره مربوط به قانون خود در گرامر

  42. 2-9 تجزيه ( پارسينگ) * تجزيه به كمك تحليلگر نحوي و به نام تحليل نحوي انجام مي گيرد. * در تجزيه تعلق رشته ورودي به زبان مبدا بررسي مي شود. * بررسي طبق ساختار و نحو دستورات زبان مبدا انجام مي گيرد.

  43. 2-9-1 تجزيه- دسته بندي روشها روش بالا به پايين : ساخته شدن درخت تجزيه از بالا به پايين. مانند LL(1) روش پايين به بالا: ساخته شدن درخت تجزيه از پايين مانند تجزيه به بالا عملگر0 اولويت و LR

  44. 2-9-1-1 تجزيه كننده بالا به پايين آغاز تجزيه از عنصر شروع گرامر جايگزيني قانون يك غير پايانه قانون كاربرد دارد؟ بلي خير عقبگرد به قانون هم سطح ديگر برو به قانون سطح بعد

  45. مثال از تجزيه بالا به پايين S  bBe B  cf/ ce/c تجزيه: Back tracking Back tracking S S S S b e B b B e b b B e e b B c e c c f

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

  47. مثال نمادهاي پيش نگر يا مجموعه First A  aB /cC / e B  dA / c C  cB / a First (A):{ a, c, e } First (B): { d, c } First (C) : {c, a }

  48. 2-10 بازگشتي چپ ظاهر شدن غير پايانه سمت چپ در سمت راست قانون بعنوان اولين عنصر حذف بازگشتي چپ پيش از تجزيه A  xZ / yZ Z  aZ / bZ / cZ A  Aa / Ab / Ac / x / y

  49. مثال حذف بازگشتي چپ S  Aa / b A  Ac / Sd A  Ac / Aad / bd S  Aa / b S  Aa / b A  bdZ Z  cZ / adZ

  50. 2-11 فاكتور چپ يكسان بودن عنصر سمت چپ در حداقل دو قانون گرامر فاكتورگيري چپ فاكتورگيري ازa A  aZ Z  B / C A  aB / aC

More Related