ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

Semantic Analysis تحلیلگرمعنایی

 
Post new topic   Reply to topic    ParsX.com Forum Index -> طراحی کامپایلرها
View previous topic :: View next topic  
Author Message
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue Sep 08, 2009 9:35 pm    Post subject: Semantic Analysis تحلیلگرمعنایی Reply with quote

کلا تحلیل معنایی را به دو دسته قسمت بندی می کنند یکی ایستا و دیگری پویا .
تحلیل معنایی ایستا در زمان کامپایل میسر است .:
1.بررسی همخوانی نوع متغیرها
مثلا کامپایلر پاسکال جمع دو عدد صحیح و اعشاری را خطا می دهد ، این خطا بدلیل همان تحلیلگرمعنایی ایستای این کامپایلر می باشد . در حالیکه همین تحلیلگرمعنایی در کامپایلر سی موقتا نوع مربوطه را به اعشاری تبدیل می کند و خطا نمی دهد . همچنین است برای اندیس آرایه ها مثلا اندیس اعشاری در آرایه در اکثر زبانهای برنامه نویسی معنایی ندارد و تحلیلگرمعنایی ایستا این خطا را کشف می کند .

2.یکی دیگر از وظایف تحلیلگرمعنایی ایستا چک کردن یکتا بودن متغیر می باشد . یعنی دو متغیر هم نام نمی توان در برنامه تعریف کرد .
دسته دیگر که تحلیلگرمعنایی ایستا وظیفه تشخیص آن را دارد ساختارهایی مثل حلقه های تو درتو می باشد که شروع وپایان آن باید توسط begin و end مشخص شده باشد . همچنین تعریف تابع باید با مورد استفاده آن همخوانی داشته باشد یعنی مثلا تابعی که یک پارامتر دارد نمی تواند با دو آرگومان صدا زده شود .
3.کنترل جریان دستورالعمل ها نیز از جمله وظایف تحلیلگر معنایی ایستا می باشد . یعنی مثلا استفاده از continue بیرون از حلقه اشتباه می باشد . و وظیفه این تحلیلگرمعنایی می باشد که این خطا را تشخیص دهد .
در تحلیل معنایی پویا چون اطلاعات لازم برای تشخیص کامپایلر در اختیارش قرار نمی گیرد کامپایلر مجبور است تا زمان اجرا صبر کند . مثلا بررسی اندیس آرایه ای که با متغیر I مقدار دهی می شود که آیا این اندیس از ماکسیموم اندیس آرایه بالاتر رفته است یا خیر .
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> طراحی کامپایلرها All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum