تالار گفتمان مانشت
گرامر نوع یک - نسخه‌ی قابل چاپ

گرامر نوع یک - masoudt - 13 دى ۱۳۹۱ ۰۹:۱۹ ب.ظ

با سلام خدمت دوستان.

برای زبان زیر یک گرامر نوع یک یا حسـاس به متـن طراحی کنید:
[tex]{0^n1^n0^n1^n|n>=0}[/tex]

گرامر نوع یک - Jooybari - 14 دى ۱۳۹۱ ۰۲:۰۹ ق.ظ

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

[tex]S\to 0101|0A101[/tex]
[tex]A\to 01B[/tex]
[tex]B1\to 1B[/tex]
[tex]B0\to 0C[/tex]
[tex]C0\to 0C[/tex]
[tex]C1\to 011|D011[/tex]
[tex]0D\to D0[/tex]
[tex]1D\to E1[/tex]
[tex]1E\to E1[/tex]
[tex]0E\to 0A[/tex]

توی این گرامر عملاً یک هد داریم که به چپ و راست میره و توی هر مرور یک حرف اضافه میکنه.
پیاده سازی این گرامر برای ماشین راحت تره. گرامری که خودم استفاده میکنم گرامر پایینیه. از نظر سادگی نوشتن راحت تره:

[tex]S\to 0101|01A01[/tex]
[tex]A\to PAQ|PQ[/tex]
[tex]1P\to P1[/tex]
[tex]0P\to 001[/tex]
[tex]Q0\to 0Q[/tex]
[tex]Q1\to 011[/tex]

توی این گرامر A توی هر تکرارش یه P و یه Q ایجاد میکنه. P به سمت چپ میره و یه ۰۱ اضافه میکنه و Q هم به سمت راست میره و یه ۰۱ اضافه میکنه.