PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : Semantic Analysis تحلیلگرمعنایی



Y@SiN
09-13-2009, 02:55 PM
کلا تحلیل معنایی را به دو دسته قسمت بندی می کنند یکی ایستا و دیگری پویا . تحلیل معنایی ایستا در زمان کامپایل میسر است .: 1.بررسی همخوانی نوع متغیرها مثلا کامپایلر پاسکال جمع دو عدد صحیح و اعشاری را خطا می دهد ، این خطا بدلیل همان تحلیلگرمعنایی ایستای این کامپایلر می باشد . در حالیکه همین تحلیلگرمعنایی در کامپایلر سی موقتا نوع مربوطه را به اعشاری تبدیل می کند و خطا نمی دهد . همچنین است برای اندیس آرایه ها مثلا اندیس اعشاری در آرایه در اکثر زبانهای برنامه نویسی معنایی ندارد و تحلیلگرمعنایی ایستا این خطا را کشف می کند . 2.یکی دیگر از وظایف تحلیلگرمعنایی ایستا چک کردن یکتا بودن متغیر می باشد . یعنی دو متغیر هم نام نمی توان در برنامه تعریف کرد . دسته دیگر که تحلیلگرمعنایی ایستا وظیفه تشخیص آن را دارد ساختارهایی مثل حلقه های تو درتو می باشد که شروع وپایان آن باید توسط begin و end مشخص شده باشد . همچنین تعریف تابع باید با مورد استفاده آن همخوانی داشته باشد یعنی مثلا تابعی که یک پارامتر دارد نمی تواند با دو آرگومان صدا زده شود . 3.کنترل جریان دستورالعمل ها نیز از جمله وظایف تحلیلگر معنایی ایستا می باشد . یعنی مثلا استفاده از continue بیرون از حلقه اشتباه می باشد . و وظیفه این تحلیلگرمعنایی می باشد که این خطا را تشخیص دهد . در تحلیل معنایی پویا چون اطلاعات لازم برای تشخیص کامپایلر در اختیارش قرار نمی گیرد کامپایلر مجبور است تا زمان اجرا صبر کند . مثلا بررسی اندیس آرایه ای که با متغیر I مقدار دهی می شود که آیا این اندیس از ماکسیموم اندیس آرایه بالاتر رفته است یا خیر .