کامپایلر چندگذری

دانشنامه عمومی

یک کامپایلر چند گذری یک نوع کامپایلر است که کد منبع یا درخت نحو انتزاعی از برنامه را چندین بار پردازش می کند. این نوع کامپایلر برخلاف کامپایلر تک گذری است که فقط یک بار از روی برنامه گذر می کند ( برنامه را پردازش می کند ) . هر گذر نتیجهٔ گذر قبلی را به عنوان ورودی انتخاب می کند و یک خروجی میانی تولید می کند. به این ترتیب کد میانی گذر به گذر بهبود می یابد تا گذر نهایی، کد نهایی را منتشر کند.
کامپایلرهای چند گذری گاهی اوقات به نام کامپایلرهای گسترده نام گذاری می شوند که به گذرهایی با دامنهٔ وسیع تر اشاره دارند: آنهابه جای دیدن یک بخش کوچک از برنامه می توانند کل برنامهٔ در حال کامپایل را مشاهده کنند. در نتیجه دامنه گسترده تر به این کامپایلرها اجازه می دهد تا کد بهتری نسبت به خروجی کامپایلر یک گذری از لحاظ هزینهٔ زمانی و مصرف حافظه تولید کنند ( به عنوان مثال کد با حجم کوچکتر، کد سریع تر ) . علاوه بر این، برخی از زبان ها را به دلیل نوع طراحیشان نمی توان در کامپایلرهای تک گذری کامپایل کرد.
این مرحله یک مرحله از یک کامپایلر چندگذری است که اطلاعات بی ربطی از برنامه منبع را که تحلیل نحوی قادر به استفاده یا تفسیر آن نخواهد بود را حذف می کند. اطلاعات بی ربط می تواند چیزهایی مانند نظرات و فضای سفید باشد. تحلیل لغوی علاوه بر از بین بردن اطلاعات بی ربط، نشانه های واژگانی از زبان را مشخص می کند. این بدان معنی است که اگر یک کامپایلر چندگذری استفاده شود Forward declaration به طور کلی لازم نیست.
تحلیل نحوی مسئول دنبال کردن قوانین نحوی ( معمولاً به صورت گرامرهای مستقل از متن ) و ساخت یک ارائه از زبان ( مثل یک درخت نحوی انتزاعی یا گراف جهت دار بدون دور ) است.
تحلیل معنایی قوانین معنایی را به ارائه ای که توسط تحلیل نحوی ساخته شده است اعمال می‍ کند تااز این که این برنامه از قوانین معنایی زبان پیروی می کند اطمینان حاصل شود.
برای نمونه در مثال زیر در مرحلهٔ تحلیل معنایی اگر زبان ملزم کند که ifها باید boolean باشند cond از لحاظ نوع بررسی می شود که حتماً boolean باشد.
if ( cond ) { . . . } else { . . . } در این مرحله از کامپایل علاوه بر تحلیل معنایی جدول نمادها نیز به منظور کمک به مرحلهٔ تولید کد ایجاد می شود.
این مرحله از یک کامپایلر ارائه های میانی یک برنامه را به عنوان مجموعه ای از دستورالعمل های قابل اجرا ( معمولاً زبان اسمبلی ) تبدیل می کند. مرحلهٔ آخر کامپایل تنها مرحلهٔ وابسته به ماشین است. در این مرحله برای افزایش کارایی برنامه بهینه سازی نیز می تواند انجام گیرد.
عکس کامپایلر چندگذری
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

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

بپرس