آموزش طراحی کامپایلر

آموزش طراحی کامپایلر

 

کامپیوترهای اولیه از کامپایلر استفاده نمی کردند، لذا کاربران مجبور بودند کد باینری یا دسیمال برنامه ها را به طور مستقیم و با کمک نوار های مغناطیسی به سیستم وارد کنند. طولی نکشید که برنامه نویسان به فکر تولید برنامه ای افتادند که نویسه های الفبایی (واژه های اختصاری) را به تعدادی دستور که قابل اجرا توسط ماشین باشد تبدیل کند. در این زمان بود که کامپایلرها به وجود آمدند.

آموزش طراحی کامپایلر

 

علت استفاده از کامپایلر

کامپیوترهای اولیه از کامپایلر استفاده نمی کردند، لذا کاربران مجبور بودند کد باینری یا دسیمال برنامه ها را به طور مستقیم و با کمک نوار های مغناطیسی به سیستم وارد کنند. طولی نکشید که برنامه نویسان به فکر تولید برنامه ای افتادند که نویسه های الفبایی (واژه های اختصاری) را به تعدادی دستور که قابل اجرا توسط ماشین باشد تبدیل کند. در این زمان بود که کامپایلرها به وجود آمدند.

 

کامپایلر چیست؟

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

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

 

اهمیت آشنا شدن با مفاهیم کامپایلر برای دانشجویان

ساختار کامپایلرها و کامپایلر بهینه ساز امروزه بخشی از برنامه درسی دانشجویان کامپیوتر است. مباحث مطرح شده در این دوره آموزشی، کاملا منطبق بر مباحث طرح شده در کتاب «اصول طراحی کامپایلرها» است.

 

آموزش طراحی کامپایلر — کلیک کنید (+)

 

فهرست سرفصل ها و مباحث مطرح شده در این دوره آموزشی، در ادامه آمده اند:

 

  • درس یکم: بررسی مقدماتی کامپایلر
    • روش‌های ترجمه و اجرای برنامه سطح بالا
      • استفاده از مفسر
      • استفاده از کامپایلر
    • ساختار محیط‌های برنامه‌نویسی
    • مراحل کامپایل
      • تحلیل‌ لغوی (Lexical Analysis)
      • تحلیل نحوی (Syntax Analysis)
      • تحلیل‌ معنایی (Semantic Analysis)
      • تولید کد میانی (Intermediate Code Generation)
      • بهینه‌سازی کد میانی
      • تولید کد نهایی (Code Generation)
      • بهینه‌سازی کد نهایی
    • خطا پرداز
    • مدل تجزیه و ترکیب
    • انواع کامپایلرها
  • درس دوم: تحلیل لغوی
    • انواع لغات برنامه
    • نشانه
    • جدول نمادها
    • الگوها
    • زبان‌ها
      • تعاریف اولیه
      • انواع زبان‌ها
      • گرامرها و انواع آن
      • زبان‌های منظم
    • ماشین خودکار متناهی
    • ایجاد NFA از عبارات با قاعده به روش تامپسون (thompson)
    • ایجاد DFA از NFA
    • ایجاد DFA از عبارات با قاعده
    • پیاده سازی DFA
    • پیچیدگی زمانی اسکنر
    • کلمات کلیدی
    • روش‌های طراحی و ساخت اسکنر
      • پیاده‌سازی دستی برنامه اسکنر
      • تولید خودکار برنامه اسکنر با استفاده از ابزار
    • استفاده از flex
  • درس سوم: تحلیل نحوی
    • گرامرهای مستقل از متن
      • اشتقاق
      • درخت تجزیه
      • گرامرهای مبهم
      • بازگشتی چپ
      • فاکتورگیری چپ
    • انواع تجزیه کننده ها
      • تجزیه کننده های بالا به پایین
      • تجزیه کننده های پایین به بالا
    • تجزیه بالا به پایین
      • تجزیه کننده پیشگو
      • تجزیه کننده پیشگوی غیر بازگشتی
      • ساخت جدول تجزیه پیشگوی غیر بازگشتی
      • مدیریت خطا در تجزیه کننده
      • پوشش خطا در تجزیه کننده پیشگوی غیر بازگشتی
        • فاکتورگیری چپ
        • محاسبه توابع first و follow
      • گرامرهای LL(1)
      • تجزیه‌کننده پیشگو غیر بازگشتی LL(1)
    • زبان‌ها و گرامرهای LL(k)
    • ترجمه
    • رفع خطای نحوی
      • استفاده از رفع خطای panic mode در تجزیه گر LL(1)
      • استفاده از رفع خطای level phrase در تجزیه‌گر LL(1)
  • درس چهارم: تجزیه پایین به بالا
    • تداخل‌ها در تجزیه‌گرهای پایین به بالا
      • تداخل انتقال-کاهش (s/r)
      • تداخل کاهش-کاهش (r/r)
    • تجزیه کننده های پایین به بالا
      • تجزیه کننده عملگر-اولویت
      • تجزیه کننده های LR
    • ساختار تجزیه کننده عملگر-اولویت
      • ساخت جدول تجزیه تقدم عملگر
        • ساخت جدول به صورت استدلالی
        • ساخت جدول با استفاده از توابع firstterm و lastterm
        • تعریف تابع firstterm
        • تعریف تابع lastterm
      • الگوریتم تجزیه عملگر-اولویت
      • معایب روش تجزیه عملگر-اولویت
      • رفع خطا در روش تجزیه عملگر-اولویت
      • ساخت جدول تجزیه تقدم ساده
    • ساختار کلی تجزیه‌ کننده های LR
      • پیکربندی تجزیه‌ کننده های LR
      • الگوریتم تجزیه LR(0)
      • تشخیص دستگیره‌ها در تجزیه‌گرهای LR
      • الگوریتم تجزیه SLR(1)
      • الگوریتم تجزیه LR(1)
      • الگوریتم تجزیه LALR(1)
    • رابطه بین گرامرها و زبان‌های LL(k) و LR(k)
    • مزیت استفاده از گرامرهای مبهم در روش تجزیه LR
    • ساخت یک تجزیه کننده
    • رفع خطای نحوی در تجزیه‌گرهای LR
      • روش رفع خطای panic mode
      • روش اصلاح خطای phrase level

 

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *