طراحی کامپایلرها
Compiler Design
شماره درس: ۴۰۴۱۴ | تعداد واحد: ۳ |
مقطع: کارشناسی | نوع درس: نظری |
پیشنیاز: ساختمان دادهها و الگوریتمها | همنیاز: – |
اهداف درس
طراحی و ساخت کامپایلرها یکی از مفاهیم بنیادی علوم کامپیوتر است. علیرغم آنکه روشهای ساخت کامپایلرها تنوع کمی دارند، لیکن میتوانند برای ساخت مفسرها و مترجمهای طیف گسترده و متنوعی از زبانها و ماشینها استفاده شوند. در این درس، موضوع ساخت کامپایلرها از طریق توصیف مولفههای اصلی یک کامپایلر و وظایف و ارتباط آنها معرفی میشود. پس از معرفی مقدماتی دربارهی اجزاء یک کامپایلر و انواع گرامرها، مراحل مختلف ترجمه از قبیل تجزیه و تحلیل لغوی، نحوی و معنایی و تولید و پرداخت کد تشریح میشود.
ریز مواد
- مقدمه (۲ جلسه)
- انواع زبانها و گرامرها (۱ جلسه)
- تحلیل واژهای و اصلاح خطاهای واژهای (۳ جلسه)
- تحلیل نحوی بالا به پایین (۵ جلسه)
- تجزیهی پایینگرد
- تجزیهی LL(1)
- برخورد با خطاهای نحوی
- تحلیل نحوی پایین به بالا (۸ جلسه)
- تقدم عملگر
- تقدم ساده
- تجزیهی LR(1) شاملSLR(1)، LALR(1) ، و CLR(1)
- تحلیل معنایی (۱ جلسه)
- مدیریت جدول علائم (۱ جلسه)
- روشهای تخصیص حافظهی زمان اجرا (۲ جلسه)
- تولید کد (۵ جلسه)
- پرداخت و بهینهسازی کد (۱ جلسه)
- تولید خودکار کامپایلرها (۱ جلسه)
ارزیابی
- آزمون میانترم: ۳۵%
- آزمون پایانترم: ۳۵%
- پروژهی عملی: ۲۰%
- کوئیزها و تمرینات: ۱۰%
مراجع
- A. Aho, M. Lam, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. 2nd Edition, Addison Wesley, 2007.
- D. Grune, H. Bal, C. Jacobs, and K. Langendoen. Modern Compiler Design. John Wiley, 2001.
- J. Tremblay and P. Sorenson. Theory and Practice of Compiler Writing. McGraw Hill, 1985.
- C. Fisher and R. LeBlanc. Crafting a Compiler with C. Benjamin Cummings, 1991.