تبليغاتX
اصول کامپایلرها

*پذیرنده زبانها (ماشین پذیرنده زبان )AUTAMATA

معماری پذیرنده زبان نوع سوم:همیشه ورودی پذیرنده یک رشته می باشد ،ماشین نوع سوم یک نوار نیمه متناهی دارد و یک کنترل متناهی و یک هد فقط خواندنی داریم

کنترل متناهی در هر حالت وضعیت ماشین را به ما نشان می دهد.

 

                                                    

 

چگونه با ماشین برخورد می کنیم:

 

1)رشته را روی نوار قرار می دهیم.

 

2)ماشین را در وضعیت اولیه می گذاریم تا ماشین شروع به پردازش نماید.

 

3)پس از اینکه ماشین شروع به کار کرد در انتهای رشته  وضعیت ماشین بررسی می شود که ایا در وضعیت

 

 نهایی قرار دارد یا نه؟!

 

*پذیرش:زمانی اتفاق میافتد  که در انتهای رشته ماشین در یکی از حالات نهایی خود باشد.       Accep

 

*عدم پذیرش:زمانی اتفاق می افتد که در انتهای رشته ماشین در یکی از حالات غیر نهایی خود باشد و یا اینکه ماشین به دلایلی نامعلوم متوقف شود Regict    

 

آیتم های ماشین نوع سوم:

M:(مجموعه حالات , Qالفبای زبان ,∑تابع انتقال , δ حالت اولیه  , qمجموعه حالات نهاییf )

 

{همیشه یک نقطه شروع داریم ولی می توانیم چندین نقطه پایان داشته باشیم}

*تعریف تابع انتقال :

Q×∑→Q  : δ

Q   =(Q,∑


طریقه خواندن بر حسب نوار است:

 

      b      a      b       b      a

q0→q0→q1→q1→q0→q1

 

*رشته ی abbab توسط ماشین فوق پذیرفته شد (accept)

 

*مثالی دیگر

:

 

a      b    b       a

0→q0→q1→q1→q0   q

 

چون به حالت نهایی نرسیده است می شود reject))

 

*تابع انتقال دو حالت دارد:1)گراف انتقال 2)جدول انتقال

 

 

+ نوشته شده توسط نگین مظهر در شنبه پانزدهم دی 1386 و ساعت 18:21 |

چند مفهوم مرتبط

 

  • الفبا (Alphapet): مجموعه ای محدود از علامت ها.   {الف،ب،...،ی}
  • رشته(string) : دنباله محدود از علامتها.   «علی»
  • زبان (language) : مجموعه ای محدود یا نا محدود از الفبا ایجاد می شود.
  • پیشوند رشته (prefix) : رشته حاصل از حذف،یا بیشتر علائم از انتهای رشته را گویند.
  • زیر رشته (substring) : رشته حاصل از حذف یک پیشوند و یا یک پسوند را زیر رشته می گویند.
  • رشته تهی(null string) : اگر طول رشته برابر صفر باشد گوئیم رشته تهی است و با λ نمایش می دهیم.
  • پسوند رشته(saffix) رشته حاصل از حذف یا بیشتر علائم از ابتدای رشته را می گویند.

 

 

عملیات روی زبان ها با فرض دو زبان M,L:

 

1) L U M = { S | S€L or T€M}

2) L.M={S|S€L and T€M}

3) L* = L0UL¹UL² ….       

۴)L+=L¹UL²UL³....

(جهت مشاهده متن کامل بر روی ادامه مطلب کلیک کنید)


ادامه مطلب
+ نوشته شده توسط نگین مظهر در دوشنبه پنجم آذر 1386 و ساعت 11:5 |

Pattern(الگو):به شکلهای مختلف از یک Token که می تواند به خود بگیرد اطلاق می شود به عبارت دیگر در ورودی رشته هایی وجود دارد که Tokenیکسانی برای انها تشخیص داده می شود فرم کلی این رشته ها توسط الگو یا pattern الگو توزیع می شود.

 

Lexeme(واژه): به دنباله ای از کاراکترها (نویسه ها) که تشکیل یک Token را می دهند واژه گفته می شود.

(برای مشاهده کامل بر روی ادامه مطلب کلیک کنید)


ادامه مطلب
+ نوشته شده توسط نگین مظهر در پنجشنبه یکم آذر 1386 و ساعت 18:57 |

زبان ها و گرامرها

به ازای هر گرامر یک زبان و به ازای هر زبان یک پذیرنده داریم:

 

انواع گرامرها:

  1. گرامر منظم یا با قاعده یا نوع سوم
  2. گرامر مستقل از متن یا نوع دوم
  3. گرامر حساس به متن یا نوع اول
  4. گرامر بی قاعده یا نوع صفر

نکته:زبان از نوع سوم تا نوع صفرم بی قاعده ترونامحدود تر می شود.

 

انواع زبان:

  1. زبان های منظم یا با قاعده
  2. زبان های مستقل از متن
  3. زبان های حساس به متن
  4. زبان های بی قاعده

(برای مشاهده کامل بر روی ادامه مطلب کلیک کنید)


ادامه مطلب
+ نوشته شده توسط نگین مظهر در پنجشنبه یکم آذر 1386 و ساعت 10:42 |

S.A تحلیل گر نحوی(گرامر یک زبان)

اصطلاحات:

  • الفبا:یک مجموعه محدود از علامتها
  • مجموعه(تمامی قوانین مجموعه ها مثل عضویت زیر مجموعه،مجموعه جهانی و...صدق می کند.)
  • رشته:دنباله ای از علامت ها مانند : abba
  • طول رشته:طول علامت ها می باشد به عنوان مثال  ۳  = |aba|
  • رشته تهی:رشته ای با طول صفر که با لاندا نمایش داده می شود.

(برای مشاهده کامل متن بر روی ادامه مطلب کلیک کنید)


ادامه مطلب
+ نوشته شده توسط نگین مظهر در یکشنبه بیست و هفتم آبان 1386 و ساعت 9:32 |

مرحله تحلیل گر لغوی : در این مرحله کامپایل متن برنامه ورودی حرف به حرف خوانده میشود وبه دنبالهای از نشانه ها یا tokenها عبارتند از:کلمات کلید,عملگرها,جداکننده ها,ثابت ها,شناسه ها,... در این مرحله در جدول سمبلها با فرمت خاصی ذخیره می شوند.

 

وظایف تحلیل گر لغوی :

  1. تولید tokenها
  2. تشخیص خطاهای لغوی
  3. نادیده گرفتن و حذف توضیحات
  4. بعد از تشخیص tokenها،tokenها را وارد جدول نشانه ها می کنیم .

 

تحلیل گر نحوی :در این مرحله خروجی تحلیل گر لغوی از نظر خطاهای نحوی مورد بررسی قرار میگیرد و با استفاده از نشانه های تولید شده درخت نحوی ان ساخته می شود.

 (برای مشاهده کامل متن بر روی ادامه مطلب کلیک کنید)


ادامه مطلب
+ نوشته شده توسط نگین مظهر در جمعه بیست و پنجم آبان 1386 و ساعت 19:15 |
دراین قسمت به معرفی یافته های خودمان در مورد اصول طراحی کامپایلرها می پردازیم :

  1. کتاب "اصول طراحی کامپایلر" نویسندگان : جفری اولمن - آلفرد اهو - ترجمه : ابراهیم زاده قلزم
  2. ۱ فایل پاورپوینت خوب تو اینجا آپلود کردم. حتما دریافت کنید:http://rapidshare.com/files/69203186/Osole_Tarahi_Compailer_Noorani_.rar.html
  3. مرجع مناسبی برای کامپایلر از سایت ویکی پدیا
+ نوشته شده توسط نگین مظهر در دوشنبه بیست و یکم آبان 1386 و ساعت 18:2 |
دراین قسمت به معرفی یافته های خودمان در این زمینه که بصورت لاتین می باشد می پردازیم :

  1.  http://cs.wwc.edu/~aabyan/464/Book
  2.  http://www.cs.man.ac.uk/~pjj/farrell/compmain.html اصول کامپایلر
  3.  http://www.c-compiler.com/guide/Compbasics1.htm اصول کامپایلر در زبان c
  4. http://www.scribd.com/doc/47354/Basics-of-Compiler-Design  اصول طراحی کامپایلر
  5. http://en.wikipedia.org/wiki/Compiler اصول و معرفی کامپایلرها از ویکی پدیا
+ نوشته شده توسط نگین مظهر در دوشنبه بیست و یکم آبان 1386 و ساعت 17:36 |

تعریف کامپایلر:برنامه ای است که متن یک برنامه به زبان برنامه نویسی A را دریافت نموده وپس از اعمال تغییرات خاصی به طوری که معنا و مفهوم آن عوض نشود به زبان برنامه نویسی B تبدیل میکند.

کامپایلر زبان سطح(high level) بالا را به زبان سطح پائین (low level)تبدیل میکند.

اگرتمام داده های ورودی مورد نیاز کامپایلرفراهم باشدکامپایلرمیتواندعمل مشخص شده توسط معنای برنامه را بدون تبدیل به شکل دیگر اجرا نماید...

(برای مشاهده کامل متن بر روی ادامه مطلب کلیک کنید) 


ادامه مطلب
+ نوشته شده توسط نگین مظهر در پنجشنبه هفدهم آبان 1386 و ساعت 14:15 |

سرفصل دروس

  1. تئوری زبان ها و شناخت اتاماتا(ماشین)
  2. معرفی کامپایلر .اسکنر. آنالیزها
  3. درخت پارس pars generation
  4. تولید کد و درخت میانی
  5. تقدم عملگرها
  6. پیاده سازی یک کامپایلر ساده

+ نوشته شده توسط نگین مظهر در پنجشنبه هفدهم آبان 1386 و ساعت 10:57 |