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

Compiler Design

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

هدف کلی

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

سرفصل‌ها

  1. مقدمه
    • انواع مترجم زبان‌ها و تفاوت آن‌ها
    • آشنایی سطح بالا با اجزای کامپایلر و وظیفه آن‌ها
  2. تحلیل‌گر لغوی/ واژه‌یاب
    • زبان‌های منظم
    • رفع خطای لغوی
  3. تحلیل‌گر نحوی/پارسر
    • پارسر پایین‌گرد بازگشتی غیرپیشگو
    • LL (k)
    • اصلاح خطای پارس
    • ابزار ANTLR
  4. تولید درخت انتزاعی نحو حین پارس
    • تعریف و ترجمه هدایت شده با نحو
    • خصیصه‌های موروثی و ترکیبی
    • انواع نمایش میانی کد
  5. تحلیل‌گر معنایی
    • تحلیل نام: مدیریت گستره (scope)، تحلیل ایستا/پویای نام، قوانین تحلیل نام ایستا
    • جدول علائم، رفع خطای تحلیل نام مفاهیم و گستره آن
    • تحلیل گونه (type): بررسی گونه ایستا/ پویا، قوانین تحلیل گونه، Subtyping، رفع خطای گونه
  6. تولید کد براساس مدل ماشین پشته و مدل ماشین RISC
    • مروری بر دستورات ماشین مقصد
    • تولید کد عبارت‌های ریاضی و دستورات کنترلی
    • تولید کد بهینه
  7. مدیریت محیط زمان اجرای برنامه
    • مدیریت heap و پشته
    • طراحی رکورد فعالیت
  8. بهینه‌سازی محلی و سراسری
  9. تخصیص رجیستر
  10. زباله‌روبی (اختیاری)

ارزیابی پیشنهادی

منابع پیشنهادی

  1. A. W. Appel and J. Palsberg. Modern Compiler Implementation in Java. 2nd Edition, Cambridge University press, 2002
  2. A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. 2nd Edition, Addison Wesley, 2007.
  3. K. D. Cooper and L. Torczon. Engineering a Compiler. 3rd Edition, Elsevier, 2022.