![]() |
گرامر خطی راست و چپ - نسخهی قابل چاپ |
گرامر خطی راست و چپ - z522msn - 11 دى ۱۳۹۱ ۰۱:۲۵ ب.ظ
سلام گرامر خطی راستو چجوری به چپ تبدیل میکنند و بلعکس؟ |
RE: گرامر خطی راست و چپ - mp1368 - 11 دى ۱۳۹۱ ۰۱:۴۱ ب.ظ
(۱۱ دى ۱۳۹۱ ۰۱:۲۵ ب.ظ)z522msn نوشته شده توسط: سلام سلام . گرامر خطی راست رو با استفاده از قضیه تبدیل کن به NFA NFA رو با استفاده از قضیه تبدیل کن به گرامر خطی چپ |
گرامر خطی راست و چپ - z522msn - 11 دى ۱۳۹۱ ۰۲:۰۴ ب.ظ
سلام راه ساده تری نیستش? مسلا جای متغیرشو عوض کرد و ترمینال هاشو معکوس. کرد? s-> abcA بشه s->Acba |
RE: گرامر خطی راست و چپ - cpt.mazi - 11 دى ۱۳۹۱ ۰۲:۱۰ ب.ظ
(۱۱ دى ۱۳۹۱ ۰۱:۲۵ ب.ظ)z522msn نوشته شده توسط: سلام برای تبدیل گرامرای خطی راست به چپ اول NFA گرامر اصلی رو به دست بیار ، بعد اگه این NFA چند تا حالت نهایی داشت باید تبدیلش کنی به یک حالت نهایی ، واسه این کار یک حالت جدید بکش بعد نهاییش کن و بعد از اون حالت نهایی های NFA اصلی با گذر لاندا برو به حالت جدیدت. حالا حالت شروع رو به حالت نهایی و حالت نهایی رو به حالت شروع تبدیل کن. بعد جهت یال های گراف رو عوض کن. حالا گرامر خطی راست رو با استفاده از NFA جدیدی که بدست اوردی بنویس. بعدش سمت راست قواعد رو معکوس کن... گرامرت حالا خطی چپ شده... ![]() |
RE: گرامر خطی راست و چپ - z522msn - 11 دى ۱۳۹۱ ۰۲:۲۵ ب.ظ
(۱۱ دى ۱۳۹۱ ۰۲:۰۴ ب.ظ)z522msn نوشته شده توسط: سلام و همینطور برای تبدیل گرامر چپ به راست? |
RE: گرامر خطی راست و چپ - mp1368 - 11 دى ۱۳۹۱ ۰۲:۳۴ ب.ظ
(۱۱ دى ۱۳۹۱ ۰۲:۰۴ ب.ظ)z522msn نوشته شده توسط: سلام نه دیگه این که نمیشه شما الان کلا زبان گرامر رو با این کار عوض کردی . تا جایی که من میدونم راه حل میانی واسه این کار نیست به غیر اون چیزی که بالا اشاره کردم. |
گرامر خطی راست و چپ - z522msn - 11 دى ۱۳۹۱ ۰۷:۰۸ ب.ظ
سلام پس اینکه مینویسم درسته دیگه: اگه بخوایم گرامر خطی راستو به چپ تبدیل کنیم nfa شو بدست میاریم (منظورم nfa گرامر خطی راسته)بعد از اینکه یه حالت نهایی ساختیم < حالت نهایی رو به اولیه و بلاعکس تبدیل میکنیم و جهت یالهاشو معکوس میکنیم و اسم گرافها تغییر پیدا میکنه وگراف خطی راستشو مینویسیم و در اخر قسمت تولیدو معکوس میکنیم . و اگه بخوایم گرامر خطی چپو به راست تبدیل کنیم ترمینال هاشو معکوس میکنیم ومتغیرشو در سمت راست قرار میدهیم . درست نوشتم یا نه؟؟؟؟ |
گرامر خطی راست و چپ - cpt.mazi - 11 دى ۱۳۹۱ ۰۸:۲۱ ب.ظ
والا واسه اینکه مثلا بخایم یک گرامر چپگرد رو براش NFA بکشیم فکر نمیکنم به این سادگیا بشه. (من که هر چی فکر میکنم نمیدونم تابع تحول NFA اش چطوری میشه. ولی خیلی سادست ، واسه اینکه یک گرامر چپگرد رو راستگرد کنی باید قواعد بازگشتی چپ رو حدف و به قواعد بازگشتی راست تبدیل کنی. شبه نرمال سازی یه گرامر... |
RE: گرامر خطی راست و چپ - mp1368 - 11 دى ۱۳۹۱ ۰۸:۴۱ ب.ظ
سلام . با یک مثال روال کار رو بررسی میکنیم . فرض کنید گرامر خطی راست زیر رو داریم [tex]S\rightarrow aaS|bA[/tex]
[tex]A\rightarrow bbA|\lambda[/tex] ابتدا اونو به یک ماشین متنهای تبدیل میکنیم . تبدیل این گرامر به ماشین کار زیاد سختی نیست [attachment=8673] در ادامه این ماشین رو با قوانین زیر تبدیل به گرامر خطی چپ میکنیم ۱/ متغیر S گرامر همون حالت شروع ماشین است ۲/ به ازای انتقالی مثل از B به A با الفبای a یک قاعده به فرم [tex]A\rightarrow Ba[/tex] به گرامر اضافه میکنیم ۳/ به ازای انتقالی مثل از B به A با الفبای [tex]\lambda[/tex] یک قاعده به فرم [tex]A\rightarrow B[/tex] به گرامر اضافه میکنیم ۴/ اگر A یک حالت نهایی باشد قاعده [tex]A\rightarrow \lambda[/tex] رو به قواعد گرامر اضافه میکنیم پس در نهایت گرامر خطی چپ به فرم زیر است [tex]S\rightarrow T_{1}a[/tex]
[tex]A\rightarrow Sb|T_{2}a|\lambda[/tex] [tex]T_{1}\rightarrow Sa[/tex] [tex]T_{2}\rightarrow Ab[/tex] |
RE: گرامر خطی راست و چپ - z522msn - 11 دى ۱۳۹۱ ۰۹:۱۰ ب.ظ
سلام تو این سواله نمیشه t1 و t2 در نظر نگرفت تو حالت کلی nfa رو رسم کرد و به گرامر چپ تبدیلش کرد؟معکوس کنیم و ازاین چیزا؟ تو چپ به راست اینو درست نوشتم؟ " اگه بخوایم گرامر خطی چپو به راست تبدیل کنیم ترمینال هاشو معکوس میکنیم ومتغیرشو در سمت راست قرار میدهیم . " |