طراحی کامپایلرها

Compiler Design

شماره درس: ۴۰۴۱۴ تعداد واحد: ۳
مقطع: کارشناسی نوع درس: نظری
پیش‌نیاز: ساختمان داده‌ها و الگوریتم‌ها هم‌نیاز: –

اهداف درس

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

ریز مواد

  • مقدمه (۲ جلسه)
  • انواع زبان‌ها و گرامرها (۱ جلسه)
  • تحلیل واژه‌ای و اصلاح خطاهای واژه‌ای (۳ جلسه)
  • تحلیل نحوی بالا به پایین (۵ جلسه)
    • تجزیه‌ی پایین‌گرد
    • تجزیه‌ی LL(1)
    • برخورد با خطاهای نحوی
  • تحلیل نحوی پایین به بالا (۸ جلسه)
    • تقدم عملگر
    • تقدم ساده
    • تجزیه‌ی LR(1) شاملSLR(1)، LALR(1) ، و CLR(1)
  • تحلیل معنایی (۱ جلسه)
  • مدیریت جدول علائم (۱ جلسه)
  • روش‌های تخصیص حافظه‌ی زمان اجرا (۲ جلسه)
  • تولید کد (۵ جلسه)
  • پرداخت و بهینه‌سازی کد (۱ جلسه)
  • تولید خودکار کامپایلرها (۱ جلسه)

ارزیابی

  • آزمون میان‌ترم: ۳۵%
  • آزمون پایان‌ترم: ۳۵%
  • پروژه‌ی عملی: ۲۰%
  • کوئیزها و تمرینات: ۱۰%

مراجع

  1. A. Aho, M. Lam, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. 2nd Edition, Addison Wesley, 2007.
  2. D. Grune, H. Bal, C. Jacobs, and K. Langendoen. Modern Compiler Design. John Wiley, 2001.
  3. J. Tremblay and P. Sorenson. Theory and Practice of Compiler Writing. McGraw Hill, 1985.
  4. C. Fisher and R. LeBlanc. Crafting a Compiler with C. Benjamin Cummings, 1991.