دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۶
  • اردیبهشت

جلسه ۱۱ : اصلاح خطا – طراحی کامپایلر

  • دسته‌بندی‌ها :
جلسه ۱۱ : اصلاح خطا – طراحی کامپایلر
    • جزئیات
    • نوع محتواآموزشی

      سلام و وقت بخیر خدمت همراهان وب سایت آموزشی پی وی لرن. با دوره کامل آموزش طراحی کامپایلر در خدمت شما عزیزان خواهیم بود. (Error Recovery) اصلاح خطا و طراحی کامپایلر را در این بخش مورد بررسی قرار خواهیم داد.

      (Error Recovery) اصلاح خطا و طراحی کامپایلر

      یک تجزیه گر باید بتواند هرگونه خطایی را در برنامه شناسایی و گزارش کند. انتظار می رود که هنگام بروز خطایی ، تجزیه کننده بتواند آن را مدیریت کند و تجزیه سایر قسمت ها را ادامه دهد. اغلب از تحلیلگر خطا انتظار می رود خطاها را بررسی کند اما ممکن است در مراحل مختلف فرآیند کامپایل خطایی رخ دهد. یک برنامه ممکن است انواع مختلفی از خطاها را در مراحل مختلف کامپایل داشته باشد:

      • واژگانی: نام برخی از شناسه ها نادرست تایپ شده است.
      • نحوی: سیمیکالن فراموش شده و یا یکی از پرانتزها درج نشده است.
      • معنایی: انتساب مقدار کامل نشده باشد.
      • منطقی: قسمتی از کد قابل دسترس نیست ، حلقه نامحدود

      انواع خطاهای مختلفی که در مراحل متفاوت کامپایل یک برنامه می‌توانند وجود داشته باشند، به شرح زیر هستند:

      حالت پانیک – Panic Mode

      هنگامی که یک تجزیه گر با خطایی در هر جایی از عبارت مواجه می شود ، با پردازش کردن ورودی خطا دار تا اولین جداکننده ، مانند نقطه‌ ویرگول ، سایر موارد را نادیده می گیرد. این ساده ترین روش برای بازیابی خطا است و همچنین از ورود تجزیه گر به حلقه های بی انتها جلوگیری می کند.

      حالت Statement

      وقتی یک تجزیه گر با یک خطا روبرو می شود ، سعی می کند تا از اقدامات اصلاحی استفاده کند تا بقیه ورودی های عبارت به تجزیه کمک کند تا به کار خود ادامه دهد. به عنوان مثال ، قرار دادن یک سیمیکالن فراموش شده یا جایگزینی کاما با نقطه‌ ویرگول و غیره. طراحان پارس در این جا باید مراقب باشند زیرا یک اصلاح اشتباه ممکن است به یک حلقه نامحدود منجر شود.

      Error productions

      برخی از خطاهای رایج برای طراحان کامپایلر که ممکن است در کد رخ دهد، شناخته شده است. علاوه بر این ، طراحان می توانند گرامر ارتقا یافته ای را ایجاد کنند که از این خطاها استفاده می کنند و  وقتی که با این خطاها مواجه می شوند با سازه های خطایی که  قبلا ایجاد شده است مقایسه می شوند.

      Global Correction

      تجزیه گر برنامه را به طور کلی در نظر می گیرد و سعی می کند بفهمد که این برنامه می خواهد چه کاری انجام دهد و سعی می کند نزدیک ترین مورد مطابق با آن را که بدون خطا است پیدا کند. هنگامی که یک ورودی (عبارت) با خطا بصورت X وارد تجزیه کننده می شود ، یک درخت تجزیه برای نزدیک ترین عبارت بدون خطای Y ایجاد می شود. این ممکن است به تجزیه کننده اجازه دهد تغییراتی جزئی را در کد منبع ایجاد کند ، اما به دلیل پیچیدگی (زمان و فضا) از این استراتژی ، هنوز ب صورت عملی استفاده نشده است.

      درخت‌ های نحوی مجرد

      تجزیه بازنمایی‌ های درخت تجزیه توسط کامپایلر کار ساده ای نیست ، زیرا درخت ها حاوی جزئیات بیش تری از آنچه در واقع مورد نیاز است ، می باشند. درخت تجزیه زیر را به عنوان نمونه ببینید:

      (Error Recovery) اصلاح خطا و طراحی کامپایلر

      اگر با دقت مشاهده کنید، می بینیم که بیش تر گره های برگ تنها فرزندان گره های والد خود هستند. این اطلاعات را می توان قبل از ورود به مرحله بعدی از بین برد. با پنهان کردن اطلاعات اضافی ، می توانیم یک درخت را مانند شکل زیر بدست آوریم:

      (Error Recovery) اصلاح خطا و طراحی کامپایلر

      درخت مجرد را می توان به صورت زیر نشان داد:

       

      (Error Recovery) اصلاح خطا و طراحی کامپایلر

      (Error Recovery) اصلاح خطا و طراحی کامپایلر

      AST ها ساختار داده های مهمی در کامپایلر دارای حداقل اطلاعات غیر ضروری هستند. AST ها نسبت به یک درخت تجزیه فشرده تر هستند و توسط یک کامپایلر به راحتی قابل استفاده است.

      کلام پایانی

      در این بخش از آموزش طراحی کامپایلر به بررسی (Error Recovery) اصلاح خطا و طراحی کامپایلر پرداختیم. در بخش بعدی تحلیل معنایی (Semantic Analysis) در طراحی کامپایلر را در دظر خواهیم گرفت. با ما همراه باشید.

      QR:  جلسه ۱۱ : اصلاح خطا – طراحی کامپایلر
      به اشتراک بگذارید