دوستان عزیز برای پیدا کردن سریع مطالب مورد نظر خود، می توانید از قسمت جستجوی سریع در سایت، یک یا چند کلمه کلیدی مورد نظر خود را جستجو نمایید.
یا اینکه بر روی دو آیکون سبز رنگ "طبقه بندی موضوعات" یا "جستجوی کلمات کلیدی" در سمت راست و چپ موجود در بالای سایت کلیک نمایید...
در صورت بروز مشکل در پرداخت الکترونیکی؛ میتونید ایمیلی ، پیامکی، تلفنی یا تلگرامی بگید تا فایلتون براتون ارسال بشه.
ابزارهای مولد تحليلگر لغوي و تحليلگر نحوي Lex و Yacc | تعاونی نیرومندسازی تحقیقات
طبقه بندی موضوعات
جستجوی کلمات کلیدی
شنبه , ۱۳ آذر ۱۳۹۵
آخرین مطالب
خانه -> کامپایلر -> ابزارهای مولد تحلیلگر لغوی و تحلیلگر نحوی Lex و Yacc

ابزارهای مولد تحلیلگر لغوی و تحلیلگر نحوی Lex و Yacc

معرفی دو ابزار تولید تحلیلگر لغوی و تحلیلگر نحوی

از هنگامی که تحلیگر های لغوی و تجزیه کننده ها با دست نوشته می شدند ، ]کم کم و ناخودآگاه[ تحلیلگرهای لغوی و تجزیه-کننده ها به طراحی یکسانی رسیدند و طراحان فهمیدند که آنها را می توان با دادن شرحی از رفتار مورد نظرشان ، به طور خودکار تولید کرد . نمونه ای از این ابزارهای خودکار که برنامه نویسان را از کار خسته کننده ی نوشتن]دستی[ تحلیلگر لغوی یا تجزیه کننده ، آسوده  می کنند در زیر معرفی شده اند .

ابزار تولید کننده تحلیلگر لغوی:

Lex :

Lex یک تولیدکننده ی تحلیلگر لغویست که متن را براساس اطلاعات داده شده در فایل مشخصه تحلیل می کند. این مشخصه ها که در یک فایل ورودی متنی برای  Lexلیست می شوند ، عبارات باقاعده ای را که باید تشخیص داده شوند ، تشریح می کنند . اعمالی که باید روی موجودیتهای تشخیص داده شده اجرا شوند ، می توانند به فرم برنامه های C  ، به فایل-مشخصه اضافه شوند . این اعمال عیناً در برنامه C تولید شده توسط  lex ، ثبت خواهدشد و ]بعد از[ یکبار کامپایل یک تحلیلگر لغوی را برای فایل مشخصه ی داده شده ، تشکیل خواهدداد . همه ی کاراکترهای تشخیص داده نشده توسط تحلیلگر لغوی ، عیناً در فایلِ خروجی کپی می شود .

Lex تولیدکننده آنالیزهای لغوی است. خلاصه نحوه فراخوانی دستورات آن به شکل زیر است:

Lex [-tvnq] [file]

Lex برنامه هایی را تولید می کند که با استفاده از آن ها می توان تحلیل لغوی یک متن داده شده را انجام داد. برای این کار باید قوانین مربوط به یافتن اجزاء لغوی و انجام تحلیل را در قالب فایل هایی با قالب استاندارد به عنوان ورودی به Lex داد. این فایل ها در اصل مجموعه ای از action ها هستند که به زبان c می باشند و تعیین می کنند که Lex در قبال یافتن یک واحد لغوی تعریف شده و یا به عبارت دیگر یک عبارت (expression) باید چه عکس العملی نشان دهد.

در نهایت Lex یک برنامه به زبان C تولید می کند که این برنامه می تواند یک فایل نمونه را از ورودی دریافت نماید و با توجه به قوانین از پیش تعریف شده اجزاء مختلف را شناسایی می کند. این اجزاء یا در مجموعه قوانین تعریف شده برای Lex وجود دارند و یا نه. در صورت وجود عمل متناسب بررروی آن ها انجام می شود و در غیر این صورت عین جزء شناسایی شده به خروجی منتقل می گردد.

نکته ای که وجود دارد و باید به آن دقت شود این است که Lex تنها به شناسایی اجزاء لغوی و پردازش آن ها می پردازد و هیچ پردازشی را برروی الگوهای زنجیره های لغوی انجام نمی دهد.

ابزار تولید کننده  تحلیلگر نحوی :

از این ابزار ها میتوان به YACC  و Bison  اشاره کرد که Bison  مورد بررسی قرار داده ایم .

Bison :

مقدمه :

Bison ، از یک گرامر ورودی ، یک برنامه C می­سازد که بعد از کامپایل شدن ، یک تجزیه­کننده تولید می­کند . این تجزیه­کننده ، زبان  توصیف شده توسط گرامر را تشخیص می­دهد** . برنامه­نویس باید توسط Flex یک تحلیلگرلغوی بسازد یا آن را به شکل دستی بنویسد . در فایل مشخصه­ی Bison ما می­توانیم عملیات­هایی به زبان C اضافه کنیم . هر زمان که تطابقِ*** قاعده­ی­گرامری ]با دنباله­ی توکن­ها[ تشخیص داده می­شود ، تجزیه­کننده ، عملیات مربوط به آن قاعده را اجرا می­کند . با این روش می­توان یک کامپایلر کامل نوشت .

معمولاً تجزیه­کننده­هایی که توسط Bison تولید می­شوند ، ساختار فایل ورودی را که باید از قواعدِگرامر داده شده به Bison پیروی کند ، بررسی می­کنند .

پس برای بکارگیری Bison یک فایل­مشخصه]­ی  [Biosn بنویسیم . ساختار احتمالی فایل ورودی که باید تحلیل شود ، ]شامل[ عملیات­هایی که باید اجرا شود ، یک تحلیلگر لغوی و اعلانات لازم ، خواهد بود .

Yacc در اصل برنامه ای است برای تولید پارسر ها. این برنامه یک syntax را به عنوان ورودی دریافت می کند و یک برنامه خروجی را تولید خواهد نمود که می تواند الگوهای زنجیره های لغوی را دریافت نموده و پردازش مناسب را برروی آن ها انجام دهد. این برنامه خروجی در اصل یک پارسر از نوع LALR است. عبارت LALR در اصل مخففی برای عبارت زیر است:

Look ahead, left to right, right most derivation producer with 1 look ahead token

در یک سلسه مراتب اجرا می توان گفت که ابتدا برنامه تولید شده توسط Lex اجزاء لغوی را شناسایی می نماید و سپس برنامه تولید شده توسط Yacc براساس اجزاء شناسایی شده نسبت به استخراج زنجیره های معنادار از این اجزاء شناخته شده اقدام می نماید.

 

5 عدد فایل ورد گزارش از ابزارهای مولد تحلیلگر لغوی و تحلیلگر نحوی Lex و Yacc… در مجموع  ۷۴ صفحه

۱.  گزارش Lex و Yacc –  هفت صفحه

۲. معرفی LEX و تعامل آن با YACC همراه با مثال – ۳۶ صفحه

۳. عبارت منظم زبان های برنامه نویسی – سه صفحه

۴. توضیح Lex  – یک صفحه

۵. مکانیزم کار کامپایلر – هشت صفحه

۶. معرفی ابزارهای مولد تحلیلگر لغوی و تحلیلگر نحوی – ۲۱ صفحه

——————————————————————————-

 

پروژه آماده کامپایلر : اسکنر زبان سی – C Scanner

——————————————————————————-

 

پروژه آماده کامپایلر : پارسر زبان سی – C Parser

 

 

——————————————————————————-

 

پروژه آماده کد سی شارپ اسکنر و پارسر زبان نمونه C

کد سی شارپ زبان نمونه C

قابلیت های کد سی شارپ پیاده سازی شده:
گزارش خطا
انتخاب عملی مورد نظر زمان برخورد با ابهام ها با پرسیدن از کاربر
نمایش ترمینال ها
نمایش گرامر
نمایش غیر ترمینال ها
Follow & First
لیست کلوژرها
انجام عملیات پارز مرحله به مرحله
نمایش لیست توکن های صف تو هر لحظه
نمایش درخت پارز تو هر لحظه
تعریف فایل ها

 

کد سی شارپ اسکنر و پارسر زبان نمونه C

کد سی شارپ اسکنر و پارسر زبان نمونه C

 

کاربر گرامی

برای دانلود فایل های مورد نظرتان بایستی بر روی دکمه "افزودن به سبد خرید" کلیک نمایید .

پس از چند ثانیه ، فایل مورد نظر شما به سبد خریدتان اضافه گردیده و این دکمه تبدیل به دکمه "پرداخت" خواهد شد.

با کلیلک بر روی دکمه "پرداخت" ، وارد صفحه پرداخت خواهید شد .

با وارد کردن اطلاعات و ایمیل خود ، فایل مورد نظر به ایمیل شما ارسال گردیده و همچنین لینک دانلود فایل بلافاصله برایتان به نمایش درخواهد آمد.

– قابل پرداخت با تمام کارتهای بانکی + رمز دوم

– پشتیبانی سایت ۰۹۳۵۹۵۲۹۰۵۸ – Info@tnt3.ir – universitydatainfo@yahoo.com




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

جوابی بنویسید

ایمیل شما نشر نخواهد شد

4 × 5 =

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


This site is using the Seo Wizard plugin by http://seo.uk.net/