1 / 51

درس: طراحی و پیاده سازی زبانهای برنامه سازی

a. درس: طراحی و پیاده سازی زبانهای برنامه سازی. استاد : خانم درویشیان. طراحی و ساخت از : خانم حسن زاده محمد مزرعه شاهی. فصل سوم :. اصول ترجمه زبان. فصل 3 اصول ترجمه زبان. نحو زبان برنامه سازی :. به معنای آرایش واژه ها به عنوان عناصری از یک دنباله که رابطه بین آن ها را نشان می دهد.

sun
Download Presentation

درس: طراحی و پیاده سازی زبانهای برنامه سازی

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. a

  2. درس: طراحی و پیاده سازی زبانهای برنامه سازی استاد : خانم درویشیان طراحی و ساخت از : خانم حسن زاده محمد مزرعه شاهی

  3. فصلسوم : اصول ترجمه زبان

  4. فصل 3 اصول ترجمه زبان نحو زبان برنامه سازی : به معنای آرایش واژه ها به عنوان عناصری از یک دنباله که رابطه بین آن ها را نشان می دهد.

  5. فصل 3 اصول ترجمه زبان مثال : دنباله معتبر در زبان c X = Y + Z دنباله نا معتبر در زبان c X Y + -

  6. فصل 3 اصول ترجمه زبان معیارهای عمومی نحو : 1- قابلیت خوانایی 2- قابلیت نوشتن 3- سهولت بازرسی 4- سهولت ترجمه 5- عدم وجود ابهام

  7. فصل 3 اصول ترجمه زبان قابلیت خوانایی : - اگر ساختار مربوط به الگوریتم که توسط یک برنامه نمایش داده می شود به خوبی روشن باشد می گوییم آن برنامه قابل خواند است. - برنامه های قابل خواندن را خود استنادی می گویند. - قابلیت خوانایی توسط طراحی زبان تضمین نمی شود. - قابلیت خوانایی توسط نحو یک برنامه افزایش می یابد.

  8. فصل 3 اصول ترجمه زبان نکته : زبان هایی که ساختارهای نحوی اندکی را ارایه می کنند برنامه هایی با خوانایی پایین تر را تولید می کنند. مثال در اسنوبال 4 و APL فقط یک دستور فرمت وجود دارد.

  9. فصل 3 اصول ترجمه زبان قابلیت نوشتن : ویژگی های نحوی که باعث می شوند برنامه به راحتی نوشته شود معمولا با ویژگی های نحوی که منجر به خوانایی می شوند تضاد دارند . اگر نحوی یک عنصر اطلاعاتی را به چند روش ارایه کند زاید است. بعضی از افزونگی ها در نحو زبان برنامه سازی مفید هستند زیرا خوانایی برنامه ساده تر می شود وکنترل خطا در ترجمه صورت می گیرد.

  10. فصل 3 اصول ترجمه زبان سهولت بازرسی : صحت برنامه یا بازرسی برنامه با قابلیت خوانایی ونوشتن در ارتباط است . پس از سال ها تجربه اکنون فهمیدیم که با اینکه درک هر دستور زبان برنامه سازی نسبتا ساده است فرآیند کلی ایجاد برنامه های درست بسیار مشکل است.

  11. فصل 3 اصول ترجمه زبان سهولت ترجمه : سهولت ترجمه نیاز مترجمی است که برنامه نوشته شده را پردازش می کند. کلید سهولت ترجمه نظم ساختار است. ساختار برنامه لیسپ نه قابل خواندن است ونه قابل نوشتن بلکه ترجمه آن آسان است. مثال:

  12. فصل 3 اصول ترجمه زبان عدم وجود ابهام : ابهام یک مسئله مهم در طراحی هر زبان است. تعریف زبان معنای منحصر به فردی را برای هرساختار نحوی که برنامه نویس می تواند بنویسد در نظر می گیرد. از ساختارهای مبهم دو یا چند تفسیر به عمل می آید. مسئله های ابهام در ساختار عناصر برنامه به وجود نمی آید بلکه در تاثیر متقابل بین ساختارهای متفاوت به وجود می آید.

  13. فصل 3 اصول ترجمه زبان عناصر نحوی زبان : 1- کاراکترها 2- شناسه ها 3- نمادهای عملگر 4- کلمات کلیدی و کلمات رزروی 5- کلمات اضافی 6- توضیحات 7- فضای خالی 8- فاصله ها ومحصور کننده ها 9- فرمتهای آزاد و طول ثابت 10- عبارت 11- دستورات

  14. فصل 3 اصول ترجمه زبان کاراکترها : انتخاب مجموعه کاراکتر (الفبای زبان) اولین کار در طراحی نحو زبان است.مجموعه کاراکترهایی وجود دارند که کاربرد آن ها بسیار زیاد است مثل اسکی. معمولا یک مجموعه کاراکتر استاندارد استفاده می شود هرچند ممکن است از مجموعه کاراکترهای غیر استاندارد نیز استفاده شود مثل APL. انتخاب مجموعه کاراکتر در تعیین نوع تجهیزات I/O که می تواند در پیاده سازی زبان مورد استفاده قراربگیرد اهمیت دارد. به عنوان مثال مجموعه کاراکتر C در اغلب تجهیزات I/O مهیا است. در حالی که مجموعه کاراکتر های APL در اغلب دستگاه های I/O وجود ندارد.

  15. فصل 3 اصول ترجمه زبان شناسه ها : تنوع بین زبان ها ناشی از به کار گیری کاراکتر های ویژه ای مثل نقطه یا – جهت بهبود قابلیت خوانایی و محدودیت در طول شناسه ها است. محدودیت طول شناسه مانند فرترن اولیه که 6کاراکتر بود موجب تا خوانایی برنامه کاهش یابد.

  16. فصل 3 اصول ترجمه زبان نمادهای عملگر: اغلب زبان ها از کاراکترها ی+ و – برای اعمال محاسباتی استفاده می کنند. اعمال اولیه ممکن است با کاراکترهای ویژه ای نمایش داده شود مثل APL. در بعضی از زبان ها برای اعمال اولیه از شناسه ها استفاده می شود مثل PLUS, TIMES در لیسپ. بعضی از زبان ها برای بعضی از اعمال از کاراکترها و بعضی دیگر از شناسه ها استفاده می کنند. مثلا در فرترن از .EQ. برای تساوی واز ** برای توان استفاده می کنند.

  17. فصل 3 اصول ترجمه زبان کلمات کلیدی و کلمات رزروی : کلمه کلیدی شناسه ای است که به عنوان بخش ثابتی از نحو یک دستور استفاده می شود مثل “IF”که دستور شرطی را در فرترن مشخص می کند و”DO” که دستور حلقه را شروع می کند. کلمه کلیدی در صورتی کلمه رزروی است که به عنوان شناسه انتخابی کاربر استفاده نشود.

  18. فصل 3 اصول ترجمه زبان کلمات اضافی : کلمات اختیاری هستند که در دستورات قرار می گیرند تا قابلیت خوانایی را بهبود بخشند. کوبول از این کلمات زیاد استفاده می کند. به عنوان مثال در دستور go to که به صورت GO TO label نوشته می شود وجود GO ضروری است ولی نیازی به TO نیست . یعنی فقط جهت بهبود خوانایی دستور گنجانده می شود.

  19. فصل 3 اصول ترجمه زبان توضیحات : در نظر گرفتن توضیحات در برنامه مهمترین بخش مستندسازی آن است. توضیحات در زبان ها ممکن است به شکل های گوناگونی ظاهر شوند: 1- توضیحات در خطوط جداگانه ای باشند مثل فرترن. 2- با علائم خاصی از هم جدا شوند مثل */ ,/* در C. 3- در هر جایی از خط شروع ولی با علامت خاصی خاتمه می یابند مثل _ در ادا // در C++ ! در فرترن 90

  20. فصل 3 اصول ترجمه زبان فضای خالی : قاعده استفاده از فضای خالی در زبان های مختلف متفاوت است. در فرترن فضای خالی معنای خاصی ندارند مگر در رشته های کاراکتری. بقیه زبان ها از فضای خالی به عنوان جداکننده استفاده می کنند. در اسنوبال 4عمل اولیه الحاق توسط یک فضای خالی مشخص می شود و فضای خالی به عنوان جداکننده عناصر یک دستور استفاده می شود.

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

  22. فصل 3 اصول ترجمه زبان فرمت های آزاد و طول ثابت : یک نحو در صورتی فرمت آزاد است که دستورات در هر جایی از خط شروع شوند. نحو فرمت ثابت از موقعیتهای خاصی از خط استفاده می کند. نحو ثابت دقیق که در آن هر عنصر یک دستور باید در بخش خاصی از قرار گیرند در زبان اسمبلی وجود دارند. معمولا از فرمت نسبتا ثابت استفاده می شود. مثلا در فرترن 5 کاراکتر اول برای دستورات اختصاص می یابد.

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

  24. فصل 3 اصول ترجمه زبان دستورات : دستورات مهمترین جز نحوی در زبان های دستوری هستند. نحو آن ها تاثیر حیاتی برروی نظم ، قابلیت خوانایی و قابلیت نوشتن یک زبان دارد.

  25. فصل 3 اصول ترجمه زبان ساختاربرنامه - زیربرنامه سازمان نحوی تعاریف برنامه و زیربرنامه ، همانند سایر جنبه های نحوی از زبانی به زبان دیگر متفاوت است . تفاوت ها: 1- تعریف زیربرنامه ها به صورت جداگانه 2- تعریف داده ها به صورت جداگانه 3- تعریف زیربرنامه به صورت تودرتو 4- تعریف واسط مجزا 5- تعریف زیربرنامه ها به صورت غیر مجزا

  26. فصل 3 اصول ترجمه زبان مراحل ترجمه شامل : 1- تحلیل برنامه منبع 2- ترکیب برنامه مقصد

  27. فصل 3 اصول ترجمه زبان تحلیل برنامه منبع شامل : 1- تحلیل لغوی 2- تحلیل نحوی (تجزیه ) 3- تحلیل معنایی

  28. فصل 3 اصول ترجمه زبان نکته : عملکرد واقعی تحلیگر معنایی ، بر حسب نوع زبان وسازمان منطقی مترجم فرق می کند.متداولترین اعمال به شرح زیر می باشند: 1- نگهداری جدول نماد 2- درج اطلاعات ضمنی 3- کشف خطا 4- پردازش ماکرو و عملیات زمان ترجمه

  29. فصل 3 اصول ترجمه زبان ترکیب برنامه مقصد شامل : 1- بهینه سازی 2- تولید کد 3- پیوند زدن وبار کردن

  30. فصل 3 اصول ترجمه زبان مراحل ترجمه (ادامه) : راه انداری خودکار : تبدیل کامپایلر به – p کد به صورت دستی کامپایلرهای تشخیصی : هدف اصلی زمان برگشت سریع و کامپایل سریع

  31. فصل 3 اصول ترجمه زبان مدلهای رسمی ترجمه همان طور که از قبل گفته شد بخشهای تشخیص نحوی تئوری کامپایلر استاندارد هستند و مستقل از متن زبان ها می باشند • - تعریف رسمی نحو زبان برنامه نویسی گرامر نام دارد • گرامر متشکل از مجموعه ای از قواعد (به نام مولد ها) است که ترتیب کارکترهای رامشخص می کند • گرامر رسمی گرامری هست که با استفاده از نشانه های دقیقی تعریف شده باشد • دو دسته از گرامر های مفید عبارتند از: گرامر BNF (گرامر مستقل از متن) گرامر منظم گرامر های دیگر هم وجود دارد که در فصل 4 توضیح داده میشود

  32. گرامر های BNF فصل 3 اصول ترجمه زبان وقتی یک جمله انگلیسی را در نظر می گیریم شامل بخشهایی میشود مثلا یک جمله ساده معمولا بشکل زیر است: مفعول/فعل/فاعل The girl/run/home. The boy/cooks/dinner. - هر طبقه را میشود به بخش کوچکتری تقسیم کرد: مفعول/فعل/اسم/حرف تعریف - با استفاده از قواعدی می شود نوع جمله را تشخیص داد مثلا جمله پرسشی جمله خبری و... <sentence> ::= <declarative> | <interrogative> پرسشی جمله اخباری در اینجا منظور از «=::» تعریف میشود و منظور از «|» یا می باشد

  33. فصل 3 اصول ترجمه زبان هر نوع جمله را می شود به شکل زیر تعریف کرد: <declarative> ::= <subject> <verb> <object> . <subject> ::= <article> <noun> <interrogative> ::= <auxiliary verb> <subject> <predicate> ? - به این نشانه های خاص موجود در زبانBNF می گویند که توسط جان باکوس برای تعریف نحو الگول ایجاد شد تقریبا در همان زمان گرامر مستقل از متن توسط نوآم چامسکی برای تعریف نحو زبانهای طبیعی ارائه شد که مشابه گرامر BNF بود به خاطر شباهت زیاد این دو باهم گرامر BNF و گرامر مستقل از متن به جای یکدیگر به کار می رود

  34. نحو فصل 3 اصول ترجمه زبان گرامر BNF مرکب از مجموعه متناهی از قواعد گرامر BNF هست منظور از نحو چگونگی چیدمان و قرارگیری عناصر در کنار یکدیگر هست مثلا: مفعول/فعل/فاعل • اما ممکن است یه برنامه از نظر نحو درست باشد اما چیز معنا داری را ارائه نکند یعنی با اجرا چیز مفید را ارائه نمی کند • به عنوان مثل جمله زیر از نظر نحو درست است ولی معنایی ندارد • The home/run/the girl.

  35. فصل 3 اصول ترجمه زبان - هر زبان هر مجموعه ای از رشته های کارکتری (با طول متناهی) است که کاراکترها از الفبای محدودی از نماد ها انتخاب می شوند که بر اساس این تعریف تمام موارد زیر زبان هستند: مجموعه ای از تمام انتساب c مجموعه ای از تمام برنامه های C مجموعه ای مرکب از دنباله های a و b که a قبل از b قرار دارد (abb,abb,ab و ...) زبان ممکن است متشکل از مجموعه محدودی از رشته ها یا متشکل از تعداد نامتناهی از رشته ها باشد تنها محدودیت در یک زبان این است که طول هر رشته در آن باید متناهی باشد و کارکترهای آن باید از الفبای متناهی از نمادها انتخاب شود در ساده ترین حالت یک قاعده قراردادی ممکن است عناصر زبان متناهی را لیست کند مثال: <digit>::= 0|1|2|3|4|5|6|7|8|9 این قاعده زبانی مرکب از 10 رشته کاراکتری است و به صورت زیر خوانده میشود: « یک رقم یا ’0’یا ’1’یا ’2’یا ’3’یا ’4’یا ’5’یا ’6’یا ’7’یا ’8’یا ’9’ است » -کلمه digit را طبقه نحوی یا غیر پایه می گویند و به عنوان زبانی هست که با استفاده از ان قاعده گرامری تعریف می شود - از صفر تا 9 را نماد های پایانه می گویند • اغلب از به جای نماد =:: از نماد  استفاده می شود • <X>::=<B>|<C> • X  B|C

  36. فصل 3 اصول ترجمه زبان وقتی از مجموعه ای از طبقات نحوی را تعریف کردیم می توانیم از آنها برای برای ساختن رشته های پیچیده تر استفاده کنیم مثل قاعده تعریف دستور شرطی if است که در زیر امده است: <conditional statement>::= if <booleanexpession>then<Statement> else<Statement> | if <booleanexpession>Then<Statement> طبقه نحوی که توسط قاعده ای تعریف شد ممکن است در همان قاعده مورد استفاده قرار گیرد تا تکرار را مشخص کند چنین قاعده ای را قاعده بازگشتی می گویند <Unsigned integer>::=<digit>|<Unsigned integer><digit> قاعده بالا یک مقدار صحیح بودن علامت را می سازد یک گرامر BNF کامل فقط مجموعه ای از ااین قواعد است که با همدیگر سلسله مراتبی از زبانهای فرعی را تعریف می کنند که قبل از طبقه نحوی سطح بالا قرار دارد و در یک زبان برنامه سازی معمولا طبقه نحوی <program> است

  37. فصل 3 اصول ترجمه زبان درختهای تجزیه با دانستن یک گرامر می توانیم با استفاده از یک قاعده جانشینی رشته هایی را در زبان خود ایجاد کرد به عنوان مثال گرامر زیر که پرانترهای متوازن تولید می کند: sss|(s)|() به عنوان مثل ما می خواهیم پرانتزهایی به (()()) این شکل را بسازیم پس داریم S⇒(s)⇒(ss)⇒(()s)⇒(()()) از نماد ⇒ استفاد می کنیم تا نشان دهیم که رشته ای از رشته دیگر مشتق شده است هر ترم (term) در این اشتقاق شبه جمله نام دارد و به طور رسمی زبان را مجموعه ای از شبه جملات تعریف می کنیم که هر کدام متشکل از نمادهای پایانه هستند که می توانند از نماد اولیه یک گرامر مشتق شوند

  38. فصل 3 اصول ترجمه زبان برای تعیین اینکه آیا رشته ای که در یک زبان تعریف شده است و توسط گرامر BNF نمایش داده شده است که از نظر نحوی معتبر است باید با استفاده از قواعد گرامری تحلیل نحوی یا تجزیه رشته را انجام دهیم اگر این رشته با موفقیت تجریه شود در زبان وجود دارد اگر با استفاده از قواعد گرامری نتوانسیم رشته را تجریه کنیم رشته در زبان وجود ندارد شکل زیر درخت تجریه دستور مقابل است W=Y*(U+X) Assignment satatement term W = primary * Y Arithmetic expression ( ) + X U

  39. فصل 3 اصول ترجمه زبان گرامر BNF ساختاری یرای هر رشته از زبان تعریف می کند مثل شکل قبل که الزاما درخت است و هر انشعاب میانی در درخت با برچسبی از طبقه نحو مشخص می شودکه تعیین می کنید زیر درخت موجود در پایین آن از چه دسته ای است بر حسب گره ریشه طبقه نحوی است که کل زبان را مشخص می کند (در اینجا <Assignment Satement>) • گرامر BNF بر خلاف ساختار ساده آن می تواند برای تعریف نحو اغلب زبانهای برنامه سازی به کار گرفته شود • بخشی از نحو که نمی تواند توسط گرامر BNF تعریف شود آنهایی هستند که وابسته به متن اند به عنوان مثال: • - یک شناسه در یک بلوک نمی تواند چند بار اعلان شود • هر شناسه باید در بلوکی اعلان شود که کاربردش را محدود می کند • آرایه ای با دو اندیس تعریف شود نمی تواند با سه اندیس مورد استفاده قرار گیرد • این نوع محدودیت ها باید به وسیله ضمیمه ای از گرامر BNF رسمی تعریف شود

  40. ابهام فصل 3 اصول ترجمه زبان ابهام مسئله ای است که همراه نحوه وجود دارد به جمله های زیر توجه کنید بخشش ، لازم نیست اعدامش کنید بخشش لازم نیست ، اعدامش کنید که این دو جمله دو معنا متفاوت را می رساند که به آن ابهام می گویند گاهی ابهام صفت یک گرامر است و به زبان مربوط نمی شود به عنوان مثال گرامر زیر تمام رشته های دو دویی را تولید می کند که مبهم است: Sss|0|1 این گرامر مبهم است زیرا رشته ای در زبان وجود دارد که داری دو درخت تجریه است گرامر زیر نیز همان رشته بالا را تولید می کند ولی غیر مبهم است T0T|1T|0|1 T s s T s s s s T s s s s 0 1 0 0 0 1 0 0 1

  41. بسط نشانه های BNF فصل 3 اصول ترجمه زبان گرامر BNF علیرغم قدرت ، سهولت و دقت نمی توانند قواعد نحوی زبان برنامه سازی را به خوبی با برنامه نویسی حرفه ای انتقال دهند اولین علت سهلوت قاعده BNF است که نمایش غیر طبیعی را برای ساختماهای نحوی متداول عناصر اختیاری و عناصر تکراری موجود در قاعده گرامر به وجود می اورد به عنوان مثال برای بیان ایده نحوی ساده ی عدد صحیح علامت دار قبل از عدد از “–” و”+” استفاده میشود که قاعده BNF بازگشتی زیر را دارد: <signed integer>::= + <integer> | - < integer > < integer >::= <digit> | < integer > < digit > بسط BNF موجب می شود تا بعضی از راه های غیر طبیعی برای مشخص کردن نحو ساده گرامر از بین برود

  42. فصل 3 اصول ترجمه زبان نشانه گذاری توسعه یافته BNF : • برای بسط BNF عبارات از نشانه گذاری های زیر استفاده می کنیم که قدرت گرامرBNF را تغییر نمی دهد اما توصیف زبانها را ساده تر می کند: • عنصر اختیاری معمولا در براکت قرار می گیرد […] • انتخاب از بین چندین گزینه با نماد | مشخص می شود • دنباله اختیاری از نمونه های یک عنصر با آکولاد و * مشخص می شود *{...} • مثال: • Signed integers: < Signed integer>::= [ +| - ] <digit>{<digit>}* • Indentifier: < Indentifier>::= <letter> { < letter > | <digit>}* نمودار نحوی : نمودار نحوی ابزاری گرافیکی برای بیان قواعد BNF توسعه یافته است هر قاعده به وسیله مسیری از ورودی در سمت چپ به خروجی در سمت راست نمایش داده میشود هر مسیر معتبر از ورودی یه خروجی رشته های را نشان می دهد که با استفاده از آن قاعده تولید می شود اگر قواعد دیگر را با مستطیل و نمادهای پایانی را با دایره نشان دهیم نمودار نحوی گرامر رسم کرده ایم

  43. ماشین خود کار متناهی فصل 3 اصول ترجمه زبان هر شناسه با یک حرف شروع می شود و تا زمانی که کارکتر های بعدی حروف یا ارقام باشند بخشی از نام شناسه اند کلمه رزو if متشکل از i و f است در تمام این موارد مدل ساده ای به نام ماشین خودکار متناهی (FSA) یا ماشین حالت وجود دارد که نشانه ها را تشخیص می دهد تا زمانی که می دانیم در چه حالتی هستیم می توانیم تعیین کنیم که آیا ورودیی که دیدیم بخشی از نشانه ای است که فعلا با آن سر و کار داریم یا خیر. شکل زیر یک FSA ساده را نشان می دهد که تعداد فردی از یکها را تشخیص می دهد با شروع از حالت A هر ورودی ماشین را به حالت A یا B می برد وقتی در حالت B هستیم رشته ای که تا نماد فعلی به دست آمد معتبر است و توسط ماشین پذیرفته می شود وقتی در حالت A هستیم رشته پذیرفته نمی شود 1 0 0 B A 1

  44. فصل 3 اصول ترجمه زبان عملکرد ماشین برای ورودی 100101 به صورت زیر است: به طور کلی یک FSA دارای یک حالت شروع یک یا چند حالت نهایی و مجموعه ای از انتقاهای از یک حالت به حالت دیگر است هر رشته ای که ماشین را از طریق مجموعه ای از انتقالها از حالت شروع به حالت نهایی ببرد پذیرفته می شود.

  45. فصل 3 اصول ترجمه زبان ماشین خودکار متناهی غیر قطعی : در ماشین خودکار متناهی به این طور فرض کردیم که تمام انتقالها به طور منحصر به فرد می باشد یعنی برای هر حالت FSA و برای هر نماد ورودی فقط یک انتقال به همان حالت یا حالت دیگر وجود دارد که به این ماشین ماشین متناهی قطعی می گویند. وقتی از یک حالت چندین کمان با یک بر چسب خارج شود عدم قطعیت به وجود می آید ماشین خودکار متناهی غیر متناهی را یک FSA با مشخصات زیر تعریف می کنیم: مجموعه ای از حالتها (گرهها در گراف) حالت شروع (یکی از گرهها) مجموعه ای از حالتهای نهایی (زیر مجموعه ای از گرهها) الفبای ورودی (بر چسب کمانهای بین گرهها) مجموعه ای از کمانها از گرهها به گرهها که بر چسب هر کدام از آنها عنصری از آلفبای ورودی است. ممکن است از یک گره خاص هر تعدادی از کمان به گره دیگر وصل شود حتی ممکن است چندین کمان با برچسبهای مشابه از یک گره خارج شوند این انتقالها غیر قطعی اند زیرا برای یک نماد ورودی خاص چندین مسیر وجود دارد

  46. فصل 3 اصول ترجمه زبان گرامرهای منظم گرامر های منظم حالتهای خاصی از گرامر های BNF هستند که هم ارز زبانهای FSA هستند این گرامر ها قواعدی به شکل زیر دارند: <nonterminal> ::= <terminal> < nonterminal > | < terminal > هر قاعده متشکل از یک پایانه است که ممکن است بعد از آن یک غیر پایانه باشد A0A|1A|0 مثل بالا یک گرامر منظم برای تولید رشته های دودویی است وابستگی نزدیکی بین گرامرهای FSA و منظم وجود دارد و می شود نشان داد که این دو گرامر مجموعه های یکسانی از زبان را تولید می کنند

  47. عبارات منظم فصل 3 اصول ترجمه زبان عبارات منظم شکل دیگری را برای تعریف زبان ارائه می کنند که هم ارز گرامر های FSA و منظم است عبارات منظم به صورت بازگشتی و به شکل زیری تعریف می شود: نمادهای پایانی منفرد عبارت منظم هستند اگر a و b عبارت منظم باشند انگاه aVb,(a),ab ,a* نیز عبارات منظم هستند هیچ چیز دیگری عبارت منظم نیست ab الحاق یا ترتیب عبارت منظم a و b است و aVb انتخاب a یا b را نشان می دهد a* را بستار Kleene عبارت منظم می گویند و صفر یا چند تکرار از a را نشان می دهد مثل aaa , aa , a رشته تهی را معمولا با نشان می دهند تبدیل عبارت منظم به FSA بسیار ساده است عملگر V مسیر دیگری را از حالت A به B نشان می دهد الحاق دنباله ای از حالتها رانشان می دهد و بستار Kleene حلقه ها را نشان می دهد a a a b b ab aVb a*

  48. ماشین خودکار پشته ای فصل 3 اصول ترجمه زبان ماشین خوکار پشته ای (PDA) یک ماشین مدل انتزاعی شبیه FSA است این ماشین مجموعه متناهی از حالتها را دارد علاوه بر این داری پشته است حرکات PDA به صورت زیر است: یک نماد از ورودی و عنصر بالای پشته خوانده می شوند بر اساس این دو ورودی ماشین به حالت جدید می رود و صفر یا چند نماد را در پشته می نویسد رشته وقتی پذیرفته می شود که پشته خالی شود به سادگی می توان دید که PDA ها قدرتمندتر از FSAها هستند رشته های مثل که توسط FSA شناخته نمیشود توسط PDAها شناخته میشود ماشین خودکار پشته ای غیر قطعی را مانند FSA غیر قطعی تعریف می کنیم یک رشته وقتی پذیرفته میشود که دنباله ممکنی از حرکتها وجود داشته باشد که رشته ای را بپذیرد. گرامر زیر که مجموعه ای از رشته های متقارن را تولید می کند در نظر بگیرد S::= 0S0 | 1S1 | 2 این نوع رشته با استفاده از PDA قطعی قابل تشخیص است تمام صفرها و یک هایی را که خوانده می شوند در پشته قرار دهید با خواندن 2 وارد حالت جدید شودید هر ورودی جدید را با عنصر بالای پشته مقایسه کرده و آن را حذف کنید

  49. فصل 3 اصول ترجمه زبان حال مجموعه متقارن زیر را در نظر بگیرید: S::=0S0|1S1|0|1 در این حالت وسط رشته را نمی دانیم برای تشخیص این تقارن باید وسط رشته را پیدا کند به عنوان مثال فرض می کنیم رشته متقارن 011010110 باشد که ماشین خودکار به صورت زیر عمل می کند: فقط در قسمت پنجم است که در آن ماشین حدس می زند 0110 نیمه اول است با موفقیت خاتمه می یابد اگر دنباله ای از حدس منجر به تجریه کامل رشته ورودی شود آنگاه رشته بر اساس آن گرامر معتبر است

  50. الگوریتمهای تجریه کلی فصل 3 اصول ترجمه زبان از زمان چومسکی به این نتیجه رسیدیم که هر گونه گرامر رسمی به نوع ماشین خودکار مربوط می شود ماشین خودکار نوعی ماشین انتزاعی است که قادر است یک نوار ورودی را بخواند که شامل دنباله ای از کاراکترها است و یک نوار خروجی را تولید می کند که شامل دنباله دیگری از کاراکترها است چون گرامر BNF ممکن است مبهم باشند ماشین متناهی باید غیر قطعی باشد ماشین خودکار پشته ای غیر قطعی با استفاده از این راهبرد حدس زدن می تواند گرامر مستقل از متن را تشخیص دهد برای تجریه زبان برنامه سازی نیاز به ماشین خودکار قطعی است برای گرامر های BNF نا مبهم تکنیکهای تجریه اسانی کشف شد یکی از از اولین تکنیکها عملی بازگشتی کاهشی بود پیشرفت بزرگی در اثر کشف ناث حاصل شد که گرامر LR (یا الگوریتم چپ به راست) نام دارد و تمام گرامر های BNF را توسط ماشین خودکار پشته ای قطعی تشخیص داد شد SLR(LR ساده) و LALR(LR پیش بینی) گرامرهایی از نوع LR هستند که الگوریتم های تجریه کار آمدی دارند علاوه براین تکنیک بالا به پایین دیگر به نام LL وجود دارد که حالت کلی بازگشتی کاهشی است

More Related