دستور بافتآزاد[۱] در نظریه زبان صوری، یک دستور صوری است که قواعد تولید آن را میتوان به یک نماد غیرپایانی بدون در نظر گرفتن بافت آن اعمال کرد. از دیدگاه تخصصی، در یک دستور بافتآزاد، هر قاعده تولید حالت زیر را دارد:
که در آن یک نماد غیرپایانی منفرد است، و یک رشته از پایانیها و/یا غیرپایانیها است ( میتواند تهی هم باشد).
دستور زبان مستقل از متن به گرامری به صورت (G=(V,T،S,P گفته میشود که قانونهای تولید آن به شکل زیر باشند: A→x که A € V و *(x € (V∪T
زبان L یک زبان مستقل از متن است اگر و تنها اگر گرامر مستقل از متنی مانند G وجود داشته باشد که رابطه (L=L(G برقرار باشد. همه گرامرهای منظم مستقل از متن هستند؛ بنابراین یک زبان منظم مستقل از متن نیز میباشد اما زبانهای نامنظمی مانند{a^n b^n}(^ توان) نیز وجود دارند که مستقل از متن باشند. برای این مثال یک گرامر مستقل از متن وجود دارد؛ بنابراین خانوادهٔ زبانهای منظم زیر مجموعه سرهای از خوانده زبانهای مستقل از متن میباشند. نام گرامرهای مستقل از متن از این حقیقت آمده که جانشینی متغیرهای سمت چپ قانون تولید، هرزمان که یکی از آنها در یک فرم جملهای ظاهر شود امکانپذیر است. بدین معنی که این جانشینی به دیگر نشانههای فرم جملهای (متن) وابسته نیست. این ویژگی از این ناشی میشود که تنها یک متغیر در سمت چپ قانونهای تولید قرار میگیرد.
مثالهای از زبانهای مستقل از متن مثال یک: گرامر (S},{a،b},S،P}) با قانونهای تولید s→aSa s→bSb s→Y مستقل از متن است. نمونهای از یک اشتقاق در این گرامر به صورت s→aSa→aaSaa→aabSbaa→aabbaa میباشد. این اشتقاق و دیگر اشتقاقهای مشابه نشان میدهند که زبان {L(G)={wwR:w€{a,b یک زبان مستقل از متن است؛ اما این زبان منظم نیست. مثال دو: s→abB A→aaBb B→bbAa A→Y مستقل از متن است. زبان متناظر با این گرامر {L(G)={ab(bbaa)^nbba(ba)^n:n>=۰ میباشد. هر دوی این مثالها گرامرهایی را نشان میدهند که علاوه بر مستقل از متن بودن، خطی نیز هستند. گرامرهای منظم و خطی مطمئناً مستقل از متن نیز میباشند. اما یک گرامر مستقل از متن لزوماً خطی نیست (نظریه زبانها و ماشینها پیتر لینز).
حداقل از زمان پانی، کسی که یک زبانشناس هندی مربوط به دوران قبل از میلاد مسیح بود، زبان شناسان گرامرهای زبانها را بر اساس ساختار بلوکی آنها و همینطور چگونگی تشکیل جملات از عبارتهای کوچکتر و در نهایت از کلمه و حرف توصیف کردهاند. قسمت با اهمیت این ساختارهای بلوکی این است که هیچ وقت واحدهای منطقی با یکدیگر تداخل ندارند. برای مثال:
احمد، کسی که ماشین قرمزش داخل گاراژ بود، رفت به سبزی فروشی.
میتوان بهطور منطقی عبارت بالا را پرانتز بندی کرد به صورت:
(احمد، ((کسی که ماشین قرمزش)((داخل گاراژ) بود)))، (رفت (به (سبزی فروشی)))).
برای توصیف متدهایی که به وسیله آنها در برخی از زبانهای طبیعی که عبارتها از بلوکهای کوچکتری ساخته شدهاند، گرامر مستقل از متن روشی ساده و در عین حال از لحاظ ریاضی دقیق را به وسیله گرفتن ساختارهای بلوکی جملات از راه طبیعی ایجاد میکند. سادگی آن باعث میشود تا برای رسمیسازی مطالعه ریاضیات سخت جوابگو باشد. نوام چامسکی رسمیسازی گرامر مستقل از متن و همینطور کلاس بندی نوع خاصی از گرامر رسمی آن را (که وی آن را گرامرهای ساختار عبارت[۲] نامید) در اواسط ۱۹۵۰ به وجود آورد.[۳] چیزی که چامسکی آن را گرامر ساختار عبارت نامید به گرامر حوزه انتخاباتی مشهور است، که به موجب آن در مقابل گرامر وابسته است.
گرامر مستقل از متن با ۴ عنصر مشخص میشود.
که
قاعده تولید در یعنی فرموله کردن ریاضی به شکل ، که و که رشته از متغیرها است. به جای نوشتن به شکل زوج مرتب، قاعده تولید را به شکل: مینویسند.
همچنین میتواند رشتهای خالی باشد (رشته با طول صفر)، که در این زمان با ε نمایش میدهند. شکل را ε-ساخت گویند.
برای هر رشته ، که گفته میشود نتیجه میدهد و به صورت روبرو نوشته میشود : if with and such that and .
برای هر (or in some textbooks)، اگر بهطوریکه .
گرامر زبان بدین شکل است که:
زبان را گرامر مستقل از متن میگویند که وجود داشته باشد ای، بهطوریکه .
یک گرامر مستقل از متن را مناسب میگوییم هرگاه شرایط زیر را داشته باشد:
گرامر ، fh ساختهای:
یک گرامر مستقل از متن است. چون یک ε-ساخت دارد، مناسب نیست. اشتقاق معمولی در این دستور زبان:
بدین شکل است؛ و واضح است که . زبان مستقل از متن است حتی با اینکه زبان منظم نیست.
تمام گرامر مستقل از متن که رشته خالی تولید نمیکند را نمیتوان تبدیل کردن به قانونی که رشته خالی تولید نمیکند. اگر که رشته خالی تولید میکند لازم است قانون را داشته باشد ولی لازم نیست قانون ε را داشته باشد. تمام گرامرهای مستقل از متن که ε-ساخت را دارند با گرامرهای شکل نرمال چامسکی[پانویس ۱] و همچنین گرامر شکل نرمال گریباخ[پانویس ۲] معادلند."معادل بودن " در اینجا به معنای آن است که در هر گرامر زبان یکسانی تولید میکند.
به دلیل شکل به خصوص قوانین ساخت در شکل نرمال چامسکی، این شکل نرمال هم مفهوم نظری و هم عملی دارد. برای مثال، با توجه به یک گرامر مستقل از متن، میتوان از فرم نرمال چامسکی برای ساخت چندجملهای زمانی که آیا رشته داده شده در زبان توسط گرامر نشان داده شده یا خیر.
برخی از سولات که تصمیم ناپذیرند در کلاسهای وسیع تر گرامر، در گرامر مستقل از متن تصمیم پذیر شدهاند. مانند: مسئله پوچی که در گرامر وابسته به متن[پانویس ۳] تصمیم ناپذیر است ولی در گرامر مستقل از متن تصمیم پذیر است.
اما هنوز بسیاری از مسائل تصمیم ناپذیرند، مانند:
با توجه به CFG، آیا زبانی از تمام رشتهها ی الفبای ترمینال استفاده شده در این قوانین را به وجود میآورد؟[۴][۵]
با داشتن دو CFG، آیا آن دو یک زبان را تولید میکنند.[۶]
با داشتن دو CFG، آیا اولی تمام رشتههایی را تولید میکند که دومی تولید میکند.[۶]
یک راه برای گسترش گرامر مستقل از متن این است که اجازه دهیم غیر پایانی ها(nonterminals) که بحث میشوند، مقدار و ارزش آنها همراه با قوانین اثبات شوند. این اجازه میدهد تا ویژگیهای زبانهای طبیعی از قبیل توافق و مراجع، و آنالوگ به زبانهای برنامهنویسی مانند استفاده درست و تعریف شناسه، در یک راه طبیعی بیان میشود؛ مثلاً: ما یه راحتی میتوانیم بیان کنیم که فعل وفاعل در جمع و منفرد بودن باید با هم تطابق داشته باشند. در علوم کامپیوتر مثالهای این گرایش در افیکس گرامر و صفت گرامر و گرامر ایندکس است.
گرامر مستقل از متن گسترش یافته آن است که در طرف راست ساختارش عبارت با قاعده بیش از گرامرهای پایان پذیر و پایان ناپذیرش میتواند باشد. گرامر مستقل از متن گسترش یافته دقیقاً گرامر مستقل از متن را توصیف میکند.[۷]
برای هر زبان مستقل از متن L، یک گرامر برای L-{ε} وجود دارد که هر قانون تولید آن به یکی از دو صورت زیر است: A → a , A → BC به یک روند تمیزکاری برای گرامر نیاز داریم که: - متغیرهای بدون استفاده را حذف کند. - قوانین تولید ε را حذف کند. - قوانین تولید واحد را حذف کند.
متغیر X برای گرامر G=(V, T, P, S) مفید نامیده میشود اگر یک اشتقاق به صورت زیر وجود داشته باشد: S⇒αXβ⇒w که در آن: w عضو Tاستار میباشد؛ و αوβ عضو (اجتماع T,V)استار میباشند.
متغیر X مولد نامیده میشود اگر: X⇒w
متغیر X قابل دسترس نامیده میشود اگر رشتههای αوβ عضو (اجتماع T,V)استار وجود داشته باشد که: S⇒αXβ
الگوریتم کشف متغیر مولد: مجموعه متغیرهای مولد را به صورت g(G) نمایش میدهیم.
اگر A → w یک قانون تولید باشد، آنگاه A یک متغیر مولد است. پس خواهیم داشت: A∈g(G)
اگر A → α یکی از قوانین تولید باشد و همهٔ متغیرهای رشتهٔ α مولد باشند، A نیز مولد است.
الگوریتم کشف متغیرهای قابل دسترس:
S قابل دسترس است.
اگر A قابل دسترس باشد و A → α یک قانون تولید باشد، تمام متغیرهای α نیز قابل دسترس هستند.
فرض کنید G یک گرامر مستقل از متن باشد، گرامری که پس از انجام دو مرحلهٔ زیر به دست میآید، همان زبان را تعریف میکند و دارای متغیر بیاستفاده نیست.
گرامر مستقل از متن چندین شاخه و دسته مهم دارد:
تجزیه LR تجزیه LL را برای حمایت از تعداد زیادی گرامر گسترش میدهند.
نوآم چامسکی ابتدا امید داشت که بتواند محدودیت گرامر مستقل از زبان را با تغییر قوانین بهبود بخشد.[۸]
همچنین قوانین کمک دیگری برای زبانشناسی سنتی است. بخش عمدهای از دستور زایشی برای پیدا کردن راههای پالایش مکانیسم توصیفی عبارت ساختار دستور زبان و تحول قوانین بهطوریکه دقیقاً انواع چیزهایی را که توسط زبان طبیعی اجازه داده شدهاست را که میتوان بیان کند، اختصاص دادهاست.