آموزش طراحی کامپایلر
کامپیوترهای اولیه از کامپایلر استفاده نمی کردند، لذا کاربران مجبور بودند کد باینری یا دسیمال برنامه ها را به طور مستقیم و با کمک نوار های مغناطیسی به سیستم وارد کنند. طولی نکشید که برنامه نویسان به فکر تولید برنامه ای افتادند که نویسه های الفبایی (واژه های اختصاری) را به تعدادی دستور که قابل اجرا توسط ماشین باشد تبدیل کند. در این زمان بود که کامپایلرها به وجود آمدند.
علت استفاده از کامپایلر
کامپیوترهای اولیه از کامپایلر استفاده نمی کردند، لذا کاربران مجبور بودند کد باینری یا دسیمال برنامه ها را به طور مستقیم و با کمک نوار های مغناطیسی به سیستم وارد کنند. طولی نکشید که برنامه نویسان به فکر تولید برنامه ای افتادند که نویسه های الفبایی (واژه های اختصاری) را به تعدادی دستور که قابل اجرا توسط ماشین باشد تبدیل کند. در این زمان بود که کامپایلرها به وجود آمدند.
کامپایلر چیست؟
کامپایلر 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
- تداخلها در تجزیهگرهای پایین به بالا
مجموعه: اخبار و تازه ها برچسب ها: Code Generation, Compiler, Intermediate Code Generation, Lexical Analysis, Semantic Analysis, Syntax Analysis, thompson, استفاده از کامپایلر, استفاده از مفسر, الگوریتم تجزیه عملگر-اولویت, برنامه اسکنر, برنامه سطح بالا, برنامهنویسی, بهینهسازی کد میانی, پیچیدگی زمانی اسکنر, تابع firstterm, تابع lastterm, تحليل معنايي, تحلیل لغوی, تحلیل نحوی, تولید کد میانی, تولید کد نهایی, جدول نمادها, خطا پرداز, خطای panic mode, خطای phrase level, درخت تجزیه, رفع خطای level phrase, رفع خطای panic mode, روشهای طراحی و ساخت اسکنر, زبانهای منظم, طراحی کامپایلر, طراحی و ساخت اسکنر, کامپایلر, کد میانی, کد نهایی, گرامرها و انواع آن, ماشین خودکار متناهی, محاسبه توابع first, محاسبه توابع first و follow, محاسبه توابع follow, محیطهای برنامهنویسی





