poor!a 15,130 ارسال شده در 7 بهمن 1391 به طور کلی کامپایلر برنامهای است که متن برنامهای را که به یک زبان برنامهسازی نوشته شده است به عنوان ورودی میپذیرد و خروجی آن متن برنامهای به یک زبان دیگر است به طوری که معنای آن متن تغییر نمیکند. این فرآیند در زبان طبیعی ترجمه نام دارد. مترجم ها جملات یک زبان طبیعی را به زبان طبیعی دیگر ترجمه میکنند. تقریبا تمام کامپایلرها برنامهای به یک زبان منبع را گرفته به برنامهای به زبان مقصد تبدیل میکنند . به عنوان مثال زبان منبع میتواند C و زبان مقصد میتواند زبان ماشین برای کامپیوتر پنتیوم باشد. زبانی که خود کامپایلر با آن نوشته میشود زبان پیاده ساز نام دارد. علت انجام ترجمه این است که سخت افزار عملیاتی را انجام میدهد که توسط معنای برنامه توصیف میشود . به طور کلی سخت افزار تنها منبع واقعی انجام محاسبات است. اجرای برنامه ترجمه شده شامل خواندن دادههای آن بار فرمت خاص و چاپ نتایج با فرمت دیگری است . دادههای ورودی میتواند از منابع متعددی خوانده شود مثل فایلها صفحه کلید و پکیجهای شبکه به همین ترتیب خروجی نیز میتواند در فایلها صفحه نمایش رایانه و چاپگر قرار گیرد. مهمترین علت استفاده از ترجمه کد مبدا، ایجاد برنامه اجرایی می باشد. برعکس برنامهای که زبان سطح پایین را به بالاتر تبدیل می کند را decompiler گوییم. کامپیوترهای اولیه از کامپایلر استفاده نمی کردند، چرا که این کامپیوتر ها حافظه کوچکی و برنامههای کوتاهی داشتند. کاربران مجبور بودند کد باینری یا دسیمال برنامهها را به طور مستقیم و با کمک نوار های مغناطیسی به سیستم وارد کنند. اما برنامه نویسان زیاد این وضعیت را تحمل نکردند و به فکر تولید برنامهای افتادند که نویسه های الفبایی (واژه های اختصاری) را به تعدادی دستور که قابل اجرا توسط ماشین باشد تبدیل کند. در این وضعیت بود که زبان های اسمبلی و کامپایلر های اولیه با نام اسمبلر به وجود آمد. کامپایلر چگونه کار می کند؟ برای تهیه یک کامپایلر، کامپایلر دیگری را اجرا میکنیم که ورودی آن متن منبع این کامپایلر و خروجی آن کد اجرایی برای این کامپایلر است . این فرآیند کامپایل است . اگر زبان منبع همان زبان پیاده ساز باشد و متن منبعی که کامپایل میشود نسخه جدید خود کامپایلر باشد این فرآیند خودرانی نام دارد. کامپایل کردن یک برنامه با تبدیل فرمت یک فایل به فرمت دیگر مثل EBCDIC به اسکی تفاوت عمدهای ندارد . در کامپایل کردن برنامه معنای برنامه باید حفظ شود . بخشی از کامپایلر که متن زبان منبع را تحلیل میکند پردازشگر جلویی و بخشی از کامپایلر که زبان مقصد را ترکیب میکند پردازشگر نهایی نام دارد اگر کامپایلر به خوبی طراحی شده باشد پردازشگر نهایی کاملا از زبان مبدا و پردازشگر جلویی از زبان منبع بی خبر است . هر یک از این دو بخش از نمایش معنایی برنامه خبر دارند .این تفکیک دقیق دلایل فنی دارد و منجر به کامپایلرهای ساخت یافته میشود. جزوه درس ساخت و طراحی کامپایلرها توسط محسن احمدوند و هادی پرنده افضار زیر نظر استاد دکتر قاسم جابری پور تهیه شده است و مشتمل بر 50 صفحه می باشد . این جزوه سرفصل های زیر را پوشش می دهد : مفاهیم اولیه وازه یاب تعریف ساختار یاب بصورت گراف گراف عبارات ریاضی یافتن آرگومانهاي دستورات کد ساز در Symbol Table گراف عبارات شرطي آرایه ها منبع :مهندسیار compiler.pdf نقل قول به اشتراک گذاری این ارسال لینک به ارسال