ویدیو درس طراحی کامپایلرها
مدت: ۴۰ ساعت
توضیحات
کامپایلر برنامه یا مجموعهای از برنامههای کامپیوتری است که کدی به زبان برنامهنویسی سطح بالا (زبان مبدأ) را به زبانی سطح پایینتر (زبان مقصد)، تبدیل میکند. طراحی کامپایلرها به مبانی تئوری و عملی طراحی یک کامپایلر می پردازد. در این کلاس، درس طراحی کامپایلرها در دوره کارشناسی مهندسی کامپیوتر به صورت کامل طبق مراجع اصلی این درس و با دید جامع نسبت به انواع زبانهای برنامهنویسی، تدریس خواهد شد و جهت آمادگی بیشتر دانشجویان در کنکور مهندسی کامپیوتر، تستهای آزمونهای کارشناسی ارشد این رشته نیز در حین درس با حداکثر جزئیات حل خواهد شد.
منابع درسی:
• کامپایلرها، اصول، تکنیک ها و ابزارها تالیف اهو و همکاران ویراستهای اول و دوم
• ایجاد یک کامپایلر، تالیف فیشر
• پیادهسازی کامپایلر مدرن در جاوا تالیف اپل و پالسبرگ
• کتاب مرجع، طراحی کامپایلر پیشرفته آقای گرون و همکاران
سرفصل مطالب طراحی کامپایلرها به شرح زیر است:
فصل اول: مفاهیم پایه
• پردازشگر زبان، کامپایلر و مفسر
• کامپایلر تک گذره و چندگذره
• فازهای یک کامپایلر
• جدول علائم و انواع خطا
فصل دوم: یک مترجم نحو گردان ساده
• مختصری عبارات منظم و ماشینها
• مختصری بر گرامرها، چپ گردی، تعلق، اشتقاق، درخت اشتقاق
• تعریف نحو و مترجم نحو گردان
• اولویت عملگرها
فصل سوم: نحلیل لغوی
• انواع روشهای ساخت اسکنر
• ارتباط اسکنر با پارسر
• وظایف تحلیل لغوی
• نحوه عملکرد اسکنر
فصل چهارم: نحلیل نحوی، تجزیه بالا به پایین
• عملکرد یک پارسر بالا به پایین
• تبدیل گرامر جهت استفاده در پارسر بالا به پایین
• پارسر عقب گرد
• مجموعه های first و Follow
• پارسرهای LL(1) و روش تجزیه با جدول پارس LL(1)
• نحوه رفع خطا در پارسرهای LL(1)
• پارسرهای LL(k)
فصل پنجم: تجزیه پایین به بالا
• معرفی دستگیره و انواع تداخل
• پارسرهای مبتنی بر تقدم
• پارسر تقدم عملگر
• پارسر توابع تقدم
• پارسر تقدم ساده
• پارسرهای انتقال-کاهش و انواع آنها
• پارسر SLR(1)
• پارسر LR(1)
• پارسر LALR(1)
• شیوه پارس جملات با پارسرهای انتقال-کاهش
• پارسرهای LR(k) و سلسله مراتب آنها
فصل ششم: تحلیل معنایی و ترجمه مبتنی بر نحو
• ترجمه نحو-گردان
• گرامرهای خصیصه و انواع خصیصه
• تعریف ترجمه نحو-گردان
• شماهای ترجمه نحو-گردان
• پیادهسازی طرح ترجمه با پارسرها
• کنشها یا روالهای مفهومی
فصل هفتم: تولید کد میانی
• کدهای سه آدرسه
• تولید کد بالا به پایین
• تولید کد پایین به بالا
• تکنیک Back Patching
• تولید کد جهت ساختارهای شرطی
• تولید کد جهت ساختارهای تکراری
• آدرسدهی ساختار آرایه
• بررسی نوع type checking
فصل هشتم: تولید کد
• مباحث مهم در طراحی تولیدکننده کد
• مفهوم بلاک اصلی و گرافهای جریان
• استفاده از رجیسترهای موقت
• نمایش بلاک اصلی با DAG
• تولید کد از DAG
فصل نهم: بهینه سازی کد
• بهینه سازی بلاک اصلی
• کاهش رجیسترهای موقت حاصل از تولید کد
• انواع تبدیلات بهینهسازی
• بهبود تبدیلات
• بهینه سازی ساختارهای تکراری
فصل دهم: محیط زمان اجرا و مدیریت حافظه
• سازمان حافظه و استراتژیهای تخصیص آن
• تخصیص حافظه heap و stack
• مفهوم رکورد فعالیت و مدیریت فراخوانیهای تو در تو
• شیوه دسترسی به متغیرهای غیر محلی
• رویکردهای link state و Display