تبليغاتX
نرم افزار سیستم
جلسه ششم پنجشنبه 22 آذر1386 10:43

 

 

 

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

 

   مجموعه محدود از علامتها:Alphabet 

  

 

   :  دنباله محدود از علامتهاstring  

 

 مجموعه محدود یا نامحدود از الفبا:  )language) زبان

 

 رشته حاصل از حذف صفر یا بیشتر علائم از انتهای رشته:  (prefix)  پیشوند رشته

 

 رشته حاصل از حذف یک پیشوند و یا یک پسوند را زیر رشته می گویند.: sub string

 

: اگر طول رشته برابر صفر باشد گوئیم رشته تهی است و با   (null string)

 

  نمایش می دهند.

 

رشته حاصل از حذف صفر یا بیشتر علائم از ابتدای رشته:  (suffix)  پسوند رشته

 

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

 

 

عملیات روی زبانها:اگرL وm  دو زبان باشند می توان عملیات زیر را برای آنها تعریف کرد .

 

1)LU M ={S| S€L OR  S € M }

 

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

 

3) L*=L0 U L1 U L2 U ……. Li = Uni=0 Li

 

4) L+= L1 U L2 U ……. Li = Uni =1 Li

 

 

 


ادامه مطلب
  | لینک ثابت |

جلسه پنجم سه شنبه 6 آذر1386 11:32

ا

 

 

     الگو:  (Pattern)

 

  الگو به شکل های مختلفی از یک  توکن  که می تواند به خود بگیرد اطلاق می شود و به عبارت دیگر

 

 

  در ورودی رشته هایی وجود دارد که توکن یکسانی برای آن ها تشخیص داده شده می شود .فرم کلی

 

   این رشته ها توسط الگو یا Pattern  توکن توصیف می شود.

 

 

 

    واژه: (Lexeme)

 

  به دنباله ای از کاراکتر ها (نویسه ها) که تشکیل یک توکن را می دهند واژه یا Lexeme

 

  گفته می شود.

 

  کوچکترین عضوی که یک اسکنر می گیرد.

 

  مثال: نحوه ای از کار اسکنر If textvar = 123 then                                                                                    

                                                                                                      X := Y                                    ;   

 

 

  برنامه باید یک جامعیت داشته باشد که بتواند Lexemeرا تشخیص دهد و آن را به

 

   توکن معادلش تبدیل کند.

 

  الگو ها هستند که مشخص می کنند هر توکن به چه صورت باشد والگو باعث می شود که بین 

 

   if و textvar تفاوت را بفهمیم. وبدانیم کدام متغیر است و کدام کلمه کلیدی.

 

  ورودی اسکنر Lexeme و پردازش Pattern و خروجی اسکنر Token است.

 

  اولین قدم برای تشخیص توکن  تعریف Pattern است .

 

 


ادامه مطلب
  | لینک ثابت |

جلسه چهارم سه شنبه 6 آذر1386 11:28

 

 

 

یک پذیرنده ماشینی است که یک رشته را از یک زبان می گیردو در انتها می گوید که این رشته متعلق

 

 به آن زبان هست یا نه.

 

حالت کلی پذیرنده (ماشینautomata)

 

(شکل1)

 

تشخیص دهنده      Recognizer))

 

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

 

1) Pars tree  استفاده از درخت نحو   

                                                             

2) Derivation  یا بسط جمله                                                                  

                                                                                         

 آیا رشته aabbb متعلق به گرامر فوق می باشد یا نه ؟ اینگونه سوال ها را به 2 طریق می توانیم

 

حل کنیم .ابتدا بررسی می کنیم آیا می توانیم اشتقاق دهیم یا نه .

 

 

 

SAB                                                                                           :  قاعده 1

 

aA|a                                                                                       A   :    2 و3

bB|b                                                                                      B   :      4و5

V={s,A,B}                                                                                       T={a,b}            روش اول                                                                  

                                                                      اشتقاق در یک مرحله   Derivation

S AB                                                                                                 (1

aAB                                                                                                  (2

aaB                                                                                                    (3

aabB                                                                                                  (4

aabbB                                                                                                (4

aabbb                                                                                                (5

روش دوم :درخت اشتقاق جمله فوق بر طبق گرامر فوق .(شکل 2)

پیمایش درخت بدست آمده (پارس) در برگ ها انجام می شود.

 

 


ادامه مطلب
  | لینک ثابت |

جلسه سوم سه شنبه 6 آذر1386 11:9

نظریه زبان

 

اصطلاحات:

 

الفبا:یک مجموعه محدود از علامت ها         

 

             {1 و 0 }=∑ الفبا

 

مثال :عضویت . زیر مجموعه . مجموعه ی جهانی و... در مورد الفبا صدق می کند.

 

رشته : دنباله ای از علامات می باشد .               مثال : abc

 

طول رشته :طول علامات می باشد .            مثال :  3= |abc|

 

رشته تهی: رشته ای با طول صفر که با λ نمایش داده می شود.   

 

  مثال: 0= | λ|

 

عملگر های روی یک رشته : عملگر اتصال یا  con cat و یا ادغام  می باشد

 

مثال :    x = abb         و        y=bb                 x.y = abbbb

 

اگر طول رشته با صفر ضرب شود برابر خودش می شود .         x= λ .x  = x . λ

 

عملگر معکوس :( reverse)                             x =abb      X^R=bba

 

زبان : مجموعه  ای محدود یا نا محدود از رشته ها

 

مثال : L1={aa,abb,bab}             L2={a,b,bb,aa}

 

الفبای زبان فارسی نامحدود است .

 

یک زبان است ولی نامحدود نیست        L3={a,aa,aaa,…..}

 

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

 

در زبان ها صدق کند.

 

 

1) اجتماع     union                       L1 U L2={x| x € L1 or x € L2}

2) اشتراک                          L1 L2={x| x € L1 and x € L2}

3)اتصال                        L1.L2={xy| x € L1and y € L2 }

 

 


ادامه مطلب
  | لینک ثابت |

جلسه دوم سه شنبه 6 آذر1386 10:58

 

 

 

  پویش گر (scanner):

 

  به واحدی از کامپایلر گفته می شود که کار تحلیل واژه را انجام می دهد.

 

Parser   :

 

  به واحدی از کامپایلر می گویند که تحلیل نحوی را انجام می دهد . parser

 

  درخت پارس را تولید می کند. (شکل 2)

 

  نکته 1 : وظیفه L.A تشخیص کاراکترها و جمع کردن کاراکترها کنار هم و

 

  تحویل لغت یا کلمه به فاز بعدی است.

 

  نکته 2 : تحلیل گر نحوی یا S.A جملات را می گیرد اگر مشکلی نداشته

 

  باشد در جایگذاری در قسمت اول یعنی L.A تک تک کاراکترها را می گیرد

 

  همچنین در قسمت S.A جمله را از نظر قاعده درست بررسی می کند

 

  سپس در قسمت تحلیل گر معنایی جمله از نظر مفهومی بررسی می

 

  شود.

 

 

 


ادامه مطلب
  | لینک ثابت |

جلسه اول شنبه 26 آبان1386 11:54

 

 

      کامپایلر چیست؟

 

 

 

برنامه ای است که متن یک برنامه به زبان برنامه نویسی  a را دریافت نموده و پس از اعمال

 

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

 

(شکل 1-1)

 

   

مهم این است که ما یکسری قوانین داشته باشیم که متن a  را به متن  b  تبدیل کند.

 

ما در کامپایلر یکسری پیام و هشدار داریم یعنی اگر در برنامه ورودی خطائی داشته باشیم کامپایلر

 

 هشدار می دهد و ممکن است خطا بگیرد.برنامه مبدا راsource program و برنامه مقصد را target

 

program می گویند.

 

برنامه مبدا با زبان سطح بالا پس از کامپایل در مقصد با زبان سطح پایین تبدیل می شود.

 

هر چه برنامه به زبان ماشین نزدیک تر باشد سرعت هم بیشتر می شود.

 

نکته 1 : اگر تمام داده های ورودی مورد نیاز کامپایلر فراهم باشد , کامپایلر می تواند عمل مشخص شده