औपचारिक व्याकरण: Difference between revisions

From Vigyanwiki
No edit summary
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Structure of a formal language}}
{{Short description|Structure of a formal language}}
[[औपचारिक भाषा]] सिद्धांत में, व्याकरण जब संदर्भ नहीं दिया जाता है, जिसे अक्सर स्पष्टता के लिए एक औपचारिक व्याकरण कहा जाता है) वर्णन करता है कि किसी भाषा के [[वर्णमाला]] से तार कैसे बनाये जाते हैं जो भाषा के वाक्य-विन्यास के अनुसार मान्य होते हैं। एक व्याकरण शब्दार्थ का वर्णन नहीं करता है बल्कि किसी भी संदर्भ में उनके साथ क्या किया जा सकता है - केवल उनका रूप का भी वर्णन करता है औपचारिक व्याकरण को औपचारिक भाषा में ऐसे तारों के उत्पादन नियमों के एक सेट के रूप में परिभाषित किया जाता है।
[[औपचारिक भाषा]] सिद्धांत में, व्याकरण (जब संदर्भ नहीं दिया जाता है, जिसे अधिकांशतः स्पष्टता के लिए एक औपचारिक व्याकरण कहा जाता है) वर्णन करता है कि किसी भाषा के [[वर्णमाला]] से श्रृंखला कैसे बनाये जाते है जो भाषा के वाक्य-विन्यास के अनुसार मान्य होते है। व्याकरण शब्दार्थ का वर्णन नहीं करता है जबकि किसी भी संदर्भ में उनके साथ क्या किया जा सकता है - केवल उनका रूप का भी वर्णन करता है औपचारिक व्याकरण को औपचारिक भाषा में ऐसे श्रृंखला के प्रस्तुतिकरण नियमों को सेट के रूप में परिभाषित किया जाता है।


औपचारिक भाषा सिद्धांत, अनुशासन जो औपचारिक व्याकरण और भाषाओं का अध्ययन करता है, अनुप्रयुक्त गणित की एक शाखा है। इसके अनुप्रयोग [[सैद्धांतिक कंप्यूटर विज्ञान]], [[सैद्धांतिक भाषाविज्ञान]], [[औपचारिक शब्दार्थ (तर्क)]], [[गणितीय तर्क]] और अन्य क्षेत्रों में पाए जाते हैं।
औपचारिक भाषा सिद्धांत, अनुशासन जो औपचारिक व्याकरण और भाषाओं का अध्ययन करता है, अनुप्रयुक्त गणित की एक शाखा है। इसके अनुप्रयोग [[सैद्धांतिक कंप्यूटर विज्ञान]], [[सैद्धांतिक भाषाविज्ञान]], [[औपचारिक शब्दार्थ (तर्क)]], [[गणितीय तर्क]] और अन्य क्षेत्रों में पाए जाते है।


औपचारिक व्याकरण स्ट्रिंग्स को फिर से लिखने के लिए नियमों का एक सेट है, साथ ही एक "स्टार्ट सिंबल" जिससे पुनर्लेखन शुरू होता है। इसलिए, व्याकरण को सामान्यतः भाषा जनरेटर के रूप में माना जाता है। चूँकि, इसे कभी-कभी एक [[पहचानकर्ता]] के आधार के रूप में भी इस्तेमाल किया जा सकता है - कंप्यूटिंग में एक फ़ंक्शन जो यह निर्धारित करता है कि दी गई स्ट्रिंग भाषा से संबंधित है या व्याकरणिक रूप से गलत है। ऐसे पहचानकर्ताओं का वर्णन करने के लिए, औपचारिक भाषा सिद्धांत अलग औपचारिकता का उपयोग करता है, जिसे [[ऑटोमेटा सिद्धांत]] के रूप में जाना जाता है। ऑटोमेटा सिद्धांत के मनोरंजक परिणामों में से एक यह है कि कुछ औपचारिक भाषाओं के लिए पहचानकर्ता को डिजाइन करना संभव नहीं है।<ref>{{citation|title=Formal Languages and Computation: Models and Their Applications|first=Alexander|last=Meduna|publisher=CRC Press|year=2014|isbn=9781466513457|page=233|url=https://books.google.com/books?id=KJ-NAgAAQBAJ&pg=PA233}}. For more on this subject, see [[undecidable problem]].</ref> [[पदच्छेद|पार्सिंग]] एक उच्चारण (प्राकृतिक भाषाओं में एक स्ट्रिंग) को प्रतीकों के एक सेट में तोड़कर और भाषा के व्याकरण के विरुद्ध प्रत्येक का विश्लेषण करके पहचानने की प्रक्रिया है।। अधिकांश भाषाओं में उनके कथनों के अर्थ उनके वाक्य-विन्यास के अनुसार संरचित होते हैं - एक अभ्यास जिसे रचनात्मक शब्दार्थ के रूप में जाना जाता है। परिणाम स्वरुप, भाषा में एक उच्चारण के अर्थ का वर्णन करने के लिए पहला कदम यह है कि इसे अलग-अलग हिस्सों में विभाजित किया जाए और इसके विश्लेषित रूप को देखा जाए (कंप्यूटर विज्ञान में इसके [[पार्स पेड़|पार्स ट्री]] के रूप में जाना जाता है, और जनरेटिक व्याकरण में [[गहरी संरचना और सतह संरचना]] के रूप में जाना जाता है)।
औपचारिक व्याकरण नियमों का एक समूह है, जिससे पुनर्लेखन प्रारंभ होता है। इसलिए, व्याकरण को सामान्यतः भाषा जनरेटर के रूप में जाना जाता है। चूँकि, इसे कभी-कभी [[पहचानकर्ता]] के आधार के रूप में भी उपयोग किया जा सकता है - कंप्यूटिंग में एक फ़ंक्शन जो यह निर्धारित करता है कि दी गई स्ट्रिंग भाषा से संबंधित है या व्याकरणिक रूप से गलत है। ऐसे पहचानकर्ताओं का वर्णन करने के लिए, औपचारिक भाषा सिद्धांत अलग औपचारिकता का उपयोग करता है, जिसे [[ऑटोमेटा सिद्धांत]] के रूप में जाना जाता है। ऑटोमेटा सिद्धांत के रोचक परिणामों में से एक यह है कि कुछ औपचारिक भाषाओं के लिए पहचानकर्ता को डिजाइन करना संभव नहीं होता है।<ref>{{citation|title=Formal Languages and Computation: Models and Their Applications|first=Alexander|last=Meduna|publisher=CRC Press|year=2014|isbn=9781466513457|page=233|url=https://books.google.com/books?id=KJ-NAgAAQBAJ&pg=PA233}}. For more on this subject, see [[undecidable problem]].</ref> [[पदच्छेद|पार्सिंग]] एक उच्चारण (प्राकृतिक भाषाओं में एक स्ट्रिंग) को प्रतीकों के सेट को खंडन करके और भाषा के व्याकरण के विपरीत, प्रत्येक का विश्लेषण करके पहचानने की प्रक्रिया है। अधिकांश भाषाओं में उनके कथनों के अर्थ उनके वाक्य-विन्यास के अनुसार संरचित होते है - एक अभ्यास जिसे रचनात्मक शब्दार्थ के रूप में जाना जाता है। परिणाम स्वरुप, भाषा में एक उच्चारण के अर्थ का वर्णन करने के लिए पहला कदम यह है कि इसे अलग-अलग हिस्सों में विभाजित किया जाए और इसके विश्लेषित रूप को देखा जाए (कंप्यूटर विज्ञान में इसे [[पार्स पेड़|पार्स ट्री]] के रूप में जाना जाता है, और जनरेटिक व्याकरण में [[गहरी संरचना और सतह संरचना]] के रूप में जाना जाता है)।


== इतिहास ==
== इतिहास ==
{{Expand section|date=February 2018}}
{{IAST|[[पाणिनि]]}}' का ग्रंथ अष्टाध्यायी [[संस्कृत]] के औपचारिक व्याकरण का वर्णन करने के लिए औपचारिक नियम और परिभाषाएँ देता है।<ref>{{cite web|title=Panini biography|url=http://www-history.mcs.st-andrews.ac.uk/Biographies/Panini.html|website=www-history.mcs.st-andrews.ac.uk|archive-url=https://web.archive.org/web/20180815012712/http://www-history.mcs.st-andrews.ac.uk/Biographies/Panini.html|archive-date=2018-08-15}}</ref> प्रपत्र और औपचारिकता के विभिन्न उपयोग है, जो समय के साथ बदल गए है, संबंधित लेखक के संपर्क में आने वाले क्षेत्रों के आधार पर, अवधारणा का एक ऐतिहासिक अवलोकन <ref name="mcelvenny">{{Cite book
{{IAST|[[Pāṇini]]}}' का ग्रंथ अष्टाध्यायी [[संस्कृत]] के औपचारिक व्याकरण का वर्णन करने के लिए औपचारिक उत्पादन नियम और परिभाषाएँ देता है।<ref>{{cite web|title=Panini biography|url=http://www-history.mcs.st-andrews.ac.uk/Biographies/Panini.html|website=www-history.mcs.st-andrews.ac.uk|archive-url=https://web.archive.org/web/20180815012712/http://www-history.mcs.st-andrews.ac.uk/Biographies/Panini.html|archive-date=2018-08-15}}</ref> प्रपत्र और औपचारिकता के विभिन्न उपयोग हैं, जो समय के साथ बदल गए हैं, संबंधित लेखक के संपर्क में आने वाले क्षेत्रों के आधार पर। अवधारणा का एक ऐतिहासिक अवलोकन <ref name="mcelvenny">{{Cite book
| veditors = McElvenny J
| veditors = McElvenny J
| title =  Form and formalism in linguistics  
| title =  Form and formalism in linguistics  
Line 22: Line 21:
| first1 = James  
| first1 = James  
}}
}}
</ref> में दिया गया है
</ref> में दिया गया है।
== परिचयात्मक उदाहरण ==
== परिचयात्मक उदाहरण ==


एक व्याकरण मुख्य रूप से [[उत्पादन (कंप्यूटर विज्ञान)]] का एक सेट होता है, तारों को बदलने के लिए नियमों को फिर से लिखना। प्रत्येक नियम एक विशेष स्ट्रिंग (इसके बाएँ हाथ की ओर) को दूसरे (इसके दाएँ हाथ की ओर) के प्रतिस्थापन को निर्दिष्ट करता है। प्रत्येक स्ट्रिंग पर एक नियम लागू किया जा सकता है जिसमें इसकी बाईं ओर सम्मलित है और एक स्ट्रिंग उत्पन्न करता है जिसमें उस बाएं हाथ की घटना को उसके दाएं हाथ से बदल दिया गया है।
एक व्याकरण मुख्य रूप से [[उत्पादन (कंप्यूटर विज्ञान)|प्रस्तुतिकरण (कंप्यूटर विज्ञान)]] का एक सेट होता है, श्रृंखला को बदलने के लिए नियमों को फिर से लिखना होता है। प्रत्येक नियम एक विशेष स्ट्रिंग (इसके बाएँ हाथ की ओर) को दूसरे (इसके दाएँ हाथ की ओर) के प्रतिस्थापन को निर्दिष्ट करता है। प्रत्येक स्ट्रिंग पर एक नियम लागू किया जा सकता है जिसमें इसकी बाईं ओर सम्मलित होता है और एक स्ट्रिंग उत्पन्न करता है जिसमें उस बाएं हाथ की घटना को उसके दाएं हाथ से बदल दिया जाता है।


[[अर्ध-थू प्रणाली]] के विपरीत, जो पूरी तरह से इन नियमों द्वारा परिभाषित है, एक व्याकरण आगे दो प्रकार के प्रतीकों के बीच अंतर करता है: गैर-टर्मिनल और टर्मिनल प्रतीक; प्रत्येक बाईं ओर कम से कम एक गैर-टर्मिनल प्रतीक होना चाहिए। यह एक विशेष गैर-टर्मिनल प्रतीक को भी अलग करता है, जिसे प्रारंभ प्रतीक कहा जाता है।
[[अर्ध-थू प्रणाली]] के विपरीत, जो पूरी तरह से इन नियमों द्वारा परिभाषित है, व्याकरण आगे दो प्रकार के प्रतीकों के बीच अंतर करता है: गैर-टर्मिनल, टर्मिनल प्रतीक, प्रत्येक बाईं ओर कम से कम एक गैर-टर्मिनल प्रतीक होना चाहिए। यह एक विशेष गैर-टर्मिनल प्रतीक को भी अलग करता है, जिसे प्रारंभ प्रतीक कहा जाता है।


व्याकरण द्वारा उत्पन्न भाषा को बिना किसी गैर-टर्मिनल प्रतीकों के सभी स्ट्रिंग्स के सेट के रूप में परिभाषित किया गया है, जो कि किसी भी तरह से अपने नियमों के अनुप्रयोग (संभावित रूप से दोहराए गए) द्वारा एकल प्रारंभ प्रतीक वाले स्ट्रिंग से उत्पन्न किया जा सकता है।
व्याकरण द्वारा उत्पन्न भाषा को बिना किसी गैर-टर्मिनल प्रतीकों के सभी स्ट्रिंग्स के सेट के रूप में परिभाषित किया जाता है, जो कि किसी भी तरह से अपने नियमों के अनुप्रयोग (संभावित रूप से दोहराए गए) द्वारा एकल प्रारंभ प्रतीक वाले स्ट्रिंग से उत्पन्न किया जा सकता है। यदि एक ही स्ट्रिंग को उत्पन्न करने के अनिवार्य रूप से अलग-अलग विधि है, तो व्याकरण को [[अस्पष्ट व्याकरण]] कहा जाता है।
यदि एक ही स्ट्रिंग को उत्पन्न करने के अनिवार्य रूप से अलग-अलग तरीके हैं, तो व्याकरण को [[अस्पष्ट व्याकरण]] कहा जाता है।


निम्नलिखित उदाहरणों में, टर्मिनल प्रतीक a और b हैं, और प्रारंभ प्रतीक S है।
निम्नलिखित उदाहरणों में, टर्मिनल प्रतीक और बी है, और प्रारंभ प्रतीक एस है।


=== उदाहरण 1 ===
=== उदाहरण 1 ===


मान लीजिए कि हमारे पास निम्नलिखित उत्पादन नियम हैं:
मान लीजिए कि हमारे पास निम्नलिखित प्रस्तुतिकरण नियम है:


: 1. <math>S \rightarrow aSb</math>
: 1. <math>S \rightarrow aSb</math>
: 2. <math>S \rightarrow ba</math>
: 2. <math>S \rightarrow ba</math>
तो हम एस से शुरू करते हैं, और इसे लागू करने के लिए एक नियम चुन सकते हैं। यदि हम नियम 1 चुनते हैं, तो हमें स्ट्रिंग aSb प्राप्त होती है। यदि हम नियम 1 को फिर से चुनते हैं, तो हम S को aSb से बदल देते हैं और स्ट्रिंग aaSbb प्राप्त करते हैं। यदि अब हम नियम 2 चुनते हैं, तो हम S को ba से प्रतिस्थापित करते हैं और स्ट्रिंग प्राप्त करते हैं{{not a typo|aababb}}, और कर दिए गए हैं। हम प्रतीकों का उपयोग करके विकल्पों की इस श्रृंखला को और संक्षेप में लिख सकते हैं: <math>S \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aababb</math>.
तो हम ''S'' से प्रारंभ करते है, और इसे लागू करने के लिए नियम चुन सकते है। यदि हम नियम 1 चुनते हैं, तो हमें स्ट्रिंग aSb प्राप्त होती है। यदि हम नियम 1 को फिर से चुनते हैं, तो हम S को aSb से बदल देते हैं और स्ट्रिंग aaSbb प्राप्त करते हैं। यदि अब हम नियम 2 चुनते हैं, तो हम S को ba से प्रतिस्थापित करते हैं और स्ट्रिंग aababb प्राप्त करते हैं, और किया जाता है। हम प्रतीकों का उपयोग करके विकल्पों की इस श्रृंखला को और संक्षेप में लिख सकते है:


व्याकरण की भाषा अनंत समुच्चय है <math>\{a^nbab^n \mid n \geq 0 \} = \{ba, abab, aababb, aaababbb, \dotsc \}</math>, कहाँ <math>a^k</math> है <math>a</math> दोहराया गया <math>k</math> टाइम्स (और <math>n</math> विशेष रूप से यह दर्शाता है कि कितनी बार उत्पादन नियम 1 लागू किया गया है)। यह व्याकरण संदर्भ-मुक्त व्याकरण है | संदर्भ-मुक्त (केवल एकल गैर-टर्मिनल बाएं हाथ के रूप में दिखाई देते हैं) और असंदिग्ध।
<math>S \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aababb</math>.
 
व्याकरण की भाषा अनंत समुच्चय है <math>\{a^nbab^n \mid n \geq 0 \} = \{ba, abab, aababb, aaababbb, \dotsc \}</math>, जहां <math>a^k</math> है <math>a</math> दोहराया गया <math>k</math> के समय (और ''n'' विशेष रूप से प्रस्तुतिकरण नियम 1 लागू होने की संख्या का प्रतिनिधित्व करता है)। यह व्याकरण संदर्भ-मुक्त है (केवल एकल गैर-टर्मिनल बाईं ओर दिखाई देते है) और असंदिग्ध है।


=== उदाहरण 2 और 3 ===
=== उदाहरण 2 और 3 ===


मान लीजिए नियम इसके बजाय ये हैं:
मान लीजिए नियम इसके अतिरिक्त है:


: 1. <math>S \rightarrow a</math>
: 1. <math>S \rightarrow a</math>
: 2. <math>S \rightarrow SS</math>
: 2. <math>S \rightarrow SS</math>
: 3. <math>aSa \rightarrow b</math>
: 3. <math>aSa \rightarrow b</math>
यह व्याकरण नियम 3 के कारण संदर्भ-मुक्त नहीं है और यह कई तरीकों के कारण अस्पष्ट है जिसमें नियम 2 का उपयोग क्रम उत्पन्न करने के लिए किया जा सकता है <math>S</math>एस।
यह व्याकरण नियम 3 के कारण संदर्भ-मुक्त नहीं है और यह कई तरीकों के कारण अस्पष्ट है जिसमें नियम 2 का उपयोग क्रम उत्पन्न करने के लिए किया जा सकता है <math>S</math> एस।


चूँकि, यह जो भाषा उत्पन्न करता है, वह केवल सभी गैर-खाली तारों का समूह है <math>a</math>एस और/या <math>b</math>एस।
चूँकि, यह जो भाषा उत्पन्न करता है, वह केवल सभी गैर-खाली श्रृंखला का समूह है <math>a</math> एस और/या <math>b</math> एस के रूप में।
यह देखना आसान है: उत्पन्न करने के लिए <math>b</math> एक से <math>S</math>, जनरेट करने के लिए नियम 2 का दो बार उपयोग करें <math>SSS</math>, फिर नियम 1 दो बार और नियम 3 एक बार उत्पन्न करने के लिए <math>b</math>. इसका मतलब है कि हम मनमाने ढंग से गैर-खाली अनुक्रम उत्पन्न कर सकते हैं <math>S</math>s और फिर उनमें से प्रत्येक को इसके साथ बदलें <math>a</math> या <math>b</math> जैसा हम चाहते हैं।


वही भाषा वैकल्पिक रूप से एक संदर्भ-मुक्त, असंदिग्ध व्याकरण द्वारा उत्पन्न की जा सकती है; उदाहरण के लिए, #नियमित व्याकरण नियमों के साथ व्याकरण
यह देखना आसान है: <math>a</math>एस और/या <math>b</math> एस। यह देखना आसान है: उत्पन्न करने के लिए <math>b</math> एक से <math>S</math>, जनरेट करने के लिए नियम 2 का दो बार उपयोग करें <math>SSS</math>, फिर नियम 1 दो बार और नियम 3 एक बार उत्पन्न करने के लिए <math>b</math>. इसका मतलब है कि हम मनमाने ढंग से गैर-खाली अनुक्रम उत्पन्न कर सकते है <math>S</math> एस और फिर उनमें से प्रत्येक को इसके साथ बदलें <math>a</math> या <math>b</math> जैसा हम चाहते है।
 
वही भाषा वैकल्पिक रूप से एक संदर्भ-मुक्त, असंदिग्ध व्याकरण द्वारा उत्पन्न की जा सकती है; उदाहरण के लिए, नियमों के साथ नियमित व्याकरण


: 1. <math>S \rightarrow aS</math>
: 1. <math>S \rightarrow aS</math>
Line 62: Line 63:
: 3. <math>S \rightarrow a</math>
: 3. <math>S \rightarrow a</math>
: 4. <math>S \rightarrow b</math>
: 4. <math>S \rightarrow b</math>
== औपचारिक परिभाषा ==
== औपचारिक परिभाषा ==
{{main|
{{main|
Line 75: Line 74:
  | location = The Hague
  | location = The Hague
  | year = 1957
  | year = 1957
}}</ref> एक व्याकरण G में निम्नलिखित घटक होते हैं:
}}</ref> एक व्याकरण G में निम्नलिखित घटक होते है:
* [[गैर-टर्मिनल प्रतीक|गैर-टर्मिनल प्रतीको]] का परिमित सेट N, जो कि G से बने स्ट्रिंग्स के साथ [[अलग करना सेट]] है।
* [[गैर-टर्मिनल प्रतीक|गैर-टर्मिनल प्रतीको]] का परिमित सेट N, जो कि G से बने स्ट्रिंग्स के साथ [[अलग करना सेट]] है।
* परिमित समुच्चय <math>\Sigma</math> [[टर्मिनल प्रतीक]]ों की संख्या जो N से विसंधित सेट है।
* परिमित समुच्चय <math>\Sigma</math> [[टर्मिनल प्रतीक|टर्मिनल प्रतीको]] की संख्या जो N से विसंधित सेट है।
* उत्पादन नियमों का एक परिमित समुच्चय, प्रपत्र का प्रत्येक नियम
* प्रस्तुतिकरण नियमों का एक परिमित समुच्चय, प्रपत्र का प्रत्येक नियम
:: <math>(\Sigma \cup N)^{*} N (\Sigma \cup N)^{*} \rightarrow (\Sigma \cup N)^{*} </math> :कहाँ <math>{*}</math> [[क्लेन स्टार]] ऑपरेटर है और <math>\cup</math> [[संघ (सेट सिद्धांत)]] को दर्शाता है। यही है, प्रत्येक उत्पादन नियम प्रतीकों की एक स्ट्रिंग से दूसरे में मैप करता है, जहां पहली स्ट्रिंग (सिर) में मनमाने ढंग से प्रतीकों की संख्या होती है, बशर्ते उनमें से कम से कम एक गैर-टर्मिनल हो। मामले में कि दूसरी स्ट्रिंग (शरीर) में केवल [[खाली स्ट्रिंग]] होती है-अर्थात, इसमें कोई प्रतीक नहीं होता है- इसे एक विशेष संकेतन के साथ दर्शाया जा सकता है (अक्सर <math>\Lambda</math>, ई या <math>\epsilon</math>) भ्रम से बचने के लिए।
:: <math>(\Sigma \cup N)^{*} N (\Sigma \cup N)^{*} \rightarrow (\Sigma \cup N)^{*} </math> :कहाँ <math>{*}</math> [[क्लेन स्टार]] ऑपरेटर है और <math>\cup</math> [[संघ (सेट सिद्धांत)]] को दर्शाता है। यही है, प्रत्येक प्रस्तुतिकरण नियम प्रतीकों की एक स्ट्रिंग से दूसरे में मैप करता है, जहां पहली स्ट्रिंग (सिर) में मनमाने ढंग से प्रतीकों की संख्या होती है, बशर्ते उनमें से कम से कम एक गैर-टर्मिनल हो। स्थितियों में कि दूसरी स्ट्रिंग में केवल रिक्त [[खाली स्ट्रिंग|स्ट्रिंग]] होती है-अर्थात, इसमें कोई प्रतीक नहीं होता है- इसे एक विशेष संकेतन के साथ दर्शाया जा सकता है (अधिकांशतः <math>\Lambda</math>, ई या <math>\epsilon</math>) भ्रम से बचने के लिए।
* एक विशिष्ट प्रतीक <math>S \in N</math> वह प्रारंभ चिह्न है, जिसे वाक्य चिह्न भी कहा जाता है।
* एक विशिष्ट प्रतीक <math>S \in N</math> वह प्रारंभ चिह्न है, जिसे वाक्य चिह्न भी कहा जाता है।
एक व्याकरण को औपचारिक रूप से [[टपल]] के रूप में परिभाषित किया जाता है <math>(N, \Sigma, P, S)</math>. इस तरह के एक औपचारिक व्याकरण को अक्सर साहित्य में [[पुनर्लेखन प्रणाली]] या [[वाक्यांश संरचना व्याकरण]] कहा जाता है।<ref>{{cite book|first=Seymour|last=Ginsburg|author-link=Seymour Ginsburg|title=Algebraic and automata theoretic properties of formal languages|publisher=North-Holland|pages=8–9|year=1975|isbn=978-0-7204-2506-2}}</ref><ref>{{cite book|last=Harrison|first=Michael A.|author-link=Michael A. Harrison|title=Introduction to Formal Language Theory|year=1978|pages=13|isbn=978-0-201-02955-0|location=Reading, Mass.|publisher=Addison-Wesley Publishing Company}}</ref>
एक व्याकरण को औपचारिक रूप से [[टपल]] के रूप में परिभाषित किया जाता है <math>(N, \Sigma, P, S)</math>. इस तरह के एक औपचारिक व्याकरण को अधिकांशतः साहित्य में [[पुनर्लेखन प्रणाली]] या [[वाक्यांश संरचना व्याकरण]] कहा जाता है।<ref>{{cite book|first=Seymour|last=Ginsburg|author-link=Seymour Ginsburg|title=Algebraic and automata theoretic properties of formal languages|publisher=North-Holland|pages=8–9|year=1975|isbn=978-0-7204-2506-2}}</ref><ref>{{cite book|last=Harrison|first=Michael A.|author-link=Michael A. Harrison|title=Introduction to Formal Language Theory|year=1978|pages=13|isbn=978-0-201-02955-0|location=Reading, Mass.|publisher=Addison-Wesley Publishing Company}}</ref>
 
 
=== औपचारिक व्याकरण के संबंध में कुछ गणितीय निर्माण ===
=== औपचारिक व्याकरण के संबंध में कुछ गणितीय निर्माण ===


Line 93: Line 90:
* की भाषा <math>G</math>, इस रूप में घोषित किया गया <math>\boldsymbol{L}(G)</math>, द्वारा निर्मित वाक्यों के सेट के रूप में परिभाषित किया गया है <math>G</math>.
* की भाषा <math>G</math>, इस रूप में घोषित किया गया <math>\boldsymbol{L}(G)</math>, द्वारा निर्मित वाक्यों के सेट के रूप में परिभाषित किया गया है <math>G</math>.


ध्यान दें कि व्याकरण <math>G = (N, \Sigma, P, S)</math> प्रभावी रूप से अर्ध-थू प्रणाली है <math>(N \cup \Sigma, P)</math>, ठीक उसी तरह से तार को फिर से लिखना; एकमात्र अंतर यह है कि हम विशिष्ट गैर-टर्मिनल प्रतीकों को अलग करते हैं, जिन्हें पुनर्लेखन नियमों में फिर से लिखा जाना चाहिए, और केवल निर्दिष्ट प्रारंभ प्रतीक से पुनर्लेखन में रुचि रखते हैं <math>S</math> गैर-टर्मिनल प्रतीकों के बिना तार के लिए।
ध्यान दें कि व्याकरण <math>G = (N, \Sigma, P, S)</math> प्रभावी रूप से अर्ध-थू प्रणाली है <math>(N \cup \Sigma, P)</math>, ठीक उसी तरह से तार को फिर से लिखना; एकमात्र अंतर यह है कि हम विशिष्ट गैर-टर्मिनल प्रतीकों को अलग करते है, जिन्हें पुनर्लेखन नियमों में फिर से लिखा जाना चाहिए, और केवल निर्दिष्ट प्रारंभ प्रतीक से पुनर्लेखन में रुचि रखते है <math>S</math> गैर-टर्मिनल प्रतीकों के बिना तार के लिए।


=== उदाहरण ===
=== उदाहरण ===
इन उदाहरणों के लिए, [[सेट-बिल्डर नोटेशन]] का उपयोग करके औपचारिक भाषाएँ निर्दिष्ट की जाती हैं।
इन उदाहरणों के लिए, [[सेट-बिल्डर नोटेशन]] का उपयोग करके औपचारिक भाषाएँ निर्दिष्ट की जाती है।


व्याकरण पर विचार करें <math>G</math> कहाँ <math>N = \left \{S, B\right \}</math>, <math>\Sigma = \left \{a, b, c\right \}</math>, <math>S</math> प्रारंभ प्रतीक है, और <math>P</math> निम्नलिखित उत्पादन नियमों के होते हैं:
व्याकरण पर विचार करें <math>G</math> कहाँ <math>N = \left \{S, B\right \}</math>, <math>\Sigma = \left \{a, b, c\right \}</math>, <math>S</math> प्रारंभ प्रतीक है, और <math>P</math> निम्नलिखित प्रस्तुतिकरण नियमों के होते है:


: 1. <math>S \rightarrow aBSc</math>
: 1. <math>S \rightarrow aBSc</math>
Line 104: Line 101:
: 3. <math>Ba \rightarrow aB</math>
: 3. <math>Ba \rightarrow aB</math>
: 4. <math>Bb \rightarrow bb </math>
: 4. <math>Bb \rightarrow bb </math>
यह व्याकरण भाषा को परिभाषित करता है <math>L(G) = \left \{ a^{n}b^{n}c^{n} \mid n \ge 1 \right \}</math> कहाँ <math>a^{n}</math> लगातार n की एक स्ट्रिंग को दर्शाता है <math>a</math>'एस। इस प्रकार, भाषा तारों का समूह है जिसमें 1 या अधिक होते हैं <math>a</math>की, उसके बाद समान संख्या में <math>b</math>की, उसके बाद समान संख्या में <math>c</math>'एस।
यह व्याकरण भाषा को परिभाषित करता है <math>L(G) = \left \{ a^{n}b^{n}c^{n} \mid n \ge 1 \right \}</math> कहाँ <math>a^{n}</math> लगातार n की एक स्ट्रिंग को दर्शाता है <math>a</math>'एस। इस प्रकार, भाषा श्रृंखला का समूह है जिसमें 1 या अधिक होते है <math>a</math>की, उसके बाद समान संख्या में <math>b</math>की, उसके बाद समान संख्या में <math>c</math>'एस।


स्ट्रिंग्स की व्युत्पत्ति के कुछ उदाहरण <math>L(G)</math> हैं:
स्ट्रिंग्स की व्युत्पत्ति के कुछ उदाहरण <math>L(G)</math> है:
{{columns-list|colwidth=22em|
{{columns-list|colwidth=22em|
* <math>\boldsymbol{S} \underset 2 \Rightarrow \boldsymbol{abc}</math>
* <math>\boldsymbol{S} \underset 2 \Rightarrow \boldsymbol{abc}</math>
* <math>\begin{align} \boldsymbol{S} & \underset 1 \Rightarrow \boldsymbol{aBSc} \\
* <math>\begin{align} \boldsymbol{S} & \underset 1 \Rightarrow \boldsymbol{aBSc} \\
Line 120: Line 117:
& \underset 4 \Rightarrow aaaB\boldsymbol{bb}ccc \underset 4 \Rightarrow aaa\boldsymbol{bb}bccc \end{align}</math>
& \underset 4 \Rightarrow aaaB\boldsymbol{bb}ccc \underset 4 \Rightarrow aaa\boldsymbol{bb}bccc \end{align}</math>
}}
}}
:(नोटेशन पर ध्यान दें: <math>P \underset i \Rightarrow Q</math> स्ट्रिंग पढ़ता है {{mvar|P}} तार उत्पन्न करता है {{mvar|Q}} उत्पादन के माध्यम से {{mvar|i}}, और उत्पन्न भाग को हर बार बोल्ड टाइप में इंगित किया जाता है।)
:(नोटेशन पर ध्यान दें: <math>P \underset i \Rightarrow Q</math> स्ट्रिंग पढ़ता है {{mvar|P}} तार उत्पन्न करता है {{mvar|Q}} प्रस्तुतिकरण के माध्यम से {{mvar|i}}, और उत्पन्न भाग को हर बार बोल्ड टाइप में इंगित किया जाता है।)


== चॉम्स्की पदानुक्रम ==
== चॉम्स्की पदानुक्रम ==
Line 126: Line 123:
चॉम्स्की पदानुक्रम}}  
चॉम्स्की पदानुक्रम}}  


जब नोम चॉम्स्की ने पहली बार 1956 में जनरेटिव व्याकरण को औपचारिक रूप दिया,<ref name="Chomsky1956"/>उन्होंने उन्हें प्रकारों में वर्गीकृत किया जिसे अब [[चॉम्स्की पदानुक्रम]] के रूप में जाना जाता है। इन प्रकारों के बीच अंतर यह है कि उनके उत्पादन के सख्त नियम हैं और इसलिए वे कम औपचारिक भाषाओं को व्यक्त कर सकते हैं। दो महत्वपूर्ण प्रकार हैं संदर्भ-मुक्त व्याकरण (प्रकार 2) और [[नियमित व्याकरण]] (प्रकार 3)। ऐसे व्याकरण से जिन भाषाओं का वर्णन किया जा सकता है, उन्हें क्रमशः [[संदर्भ-मुक्त भाषा]]एँ और [[नियमित भाषा]]एँ कहा जाता है। हालांकि [[अप्रतिबंधित व्याकरण]] (टाइप 0) की तुलना में बहुत कम शक्तिशाली, जो वास्तव में किसी भी भाषा को व्यक्त कर सकता है जिसे [[ट्यूरिंग मशीन]] द्वारा स्वीकार किया जा सकता है, इन दो प्रतिबंधित प्रकार के व्याकरणों का सबसे अधिक उपयोग किया जाता है क्योंकि उनके लिए पारसर्स को कुशलता से लागू किया जा सकता है।<ref name="Grune&Jacobs1990">Grune, Dick & Jacobs, Ceriel H., ''Parsing Techniques &ndash; A Practical Guide'', Ellis Horwood, England, 1990.</ref> उदाहरण के लिए, सभी नियमित भाषाओं को एक परिमित-राज्य मशीन द्वारा पहचाना जा सकता है, और संदर्भ-मुक्त व्याकरण के उपयोगी उपसमुच्चय के लिए कुशल [[एलएल पार्सर]] और [[एलआर पार्सर]] उत्पन्न करने के लिए जाने-माने एल्गोरिदम हैं जो व्याकरण उत्पन्न करने वाली संबंधित भाषाओं को पहचानते हैं।
जब '''नोम चॉम्स्की''' ने पहली बार 1956 में जनरेटिव व्याकरण को औपचारिक रूप दिया,<ref name="Chomsky1956"/>उन्होंने उन्हें प्रकारों में वर्गीकृत किया जिसे अब [[चॉम्स्की पदानुक्रम]] के रूप में जाना जाता है। इन प्रकारों के बीच अंतर यह है कि उनके प्रस्तुतिकरण के सख्त नियम है और इसलिए वे कम औपचारिक भाषाओं को व्यक्त कर सकते है। दो महत्वपूर्ण प्रकार है संदर्भ-मुक्त व्याकरण (प्रकार 2) और [[नियमित व्याकरण]] (प्रकार 3)। ऐसे व्याकरण से जिन भाषाओं का वर्णन किया जा सकता है, उन्हें क्रमशः [[संदर्भ-मुक्त भाषा]]एँ और [[नियमित भाषा]]एँ कहा जाता है। चूंकि [[अप्रतिबंधित व्याकरण]] (टाइप 0) की तुलना में बहुत कम शक्तिशाली होता है, जो वास्तव में किसी भी भाषा को व्यक्त कर सकता है जिसे [[ट्यूरिंग मशीन]] द्वारा स्वीकार किया जा सकता है, इन दो प्रतिबंधित प्रकार के व्याकरणों का सबसे अधिक उपयोग किया जाता है क्योंकि उनके लिए पारसर्स को कुशलता से लागू किया जा सकता है।<ref name="Grune&Jacobs1990">Grune, Dick & Jacobs, Ceriel H., ''Parsing Techniques &ndash; A Practical Guide'', Ellis Horwood, England, 1990.</ref> उदाहरण के लिए, सभी नियमित भाषाओं को एक परिमित-स्थित मशीन द्वारा पहचाना जा सकता है, और संदर्भ-मुक्त व्याकरण के उपयोगी उपसमुच्चय के लिए कुशल [[एलएल पार्सर]] और [[एलआर पार्सर]] उत्पन्न करने के लिए जाने-माने एल्गोरिदम होते है जो व्याकरण उत्पन्न करने वाली संबंधित भाषाओं को पहचानते है।


=== प्रसंग-मुक्त व्याकरण ===
=== प्रसंग-मुक्त व्याकरण ===
एक संदर्भ-मुक्त व्याकरण एक व्याकरण है जिसमें प्रत्येक उत्पादन नियम के बाईं ओर केवल एक गैर-टर्मिनल प्रतीक होता है। यह प्रतिबंध गैर-तुच्छ है; संदर्भ-मुक्त व्याकरण द्वारा सभी भाषाएँ उत्पन्न नहीं की जा सकतीं। जिन्हें संदर्भ-मुक्त भाषा कहा जा सकता है।
संदर्भ-मुक्त व्याकरण वह व्याकरण है जिसमें प्रत्येक प्रस्तुतिकरण नियम के बाईं ओर केवल एक गैर-टर्मिनल प्रतीक होता है। यह प्रतिबंध गैर-तुच्छ है; संदर्भ-मुक्त व्याकरण द्वारा सभी भाषाएँ उत्पन्न नहीं की जा सकतीं। जिन्हें संदर्भ-मुक्त भाषा कहा जा सकता है।


भाषा <math>L(G) = \left \{ a^{n}b^{n}c^{n} \mid n \ge 1 \right \}</math> ऊपर परिभाषित एक संदर्भ-मुक्त भाषा नहीं है, और इसे संदर्भ-मुक्त भाषाओं के लिए पम्पिंग लेम्मा का उपयोग करके सख्ती से सिद्ध किया जा सकता है, लेकिन उदाहरण के लिए भाषा <math>\left \{ a^{n}b^{n} \mid n \ge 1 \right \}</math> (कम से कम 1 <math>a</math> इसके बाद समान संख्या में <math>b</math>'एस) संदर्भ-मुक्त है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है <math>G_2</math> साथ <math>N=\left \{S\right \}</math>, <math>\Sigma=\left \{a,b\right \}</math>, <math>S</math> प्रारंभ प्रतीक, और निम्नलिखित उत्पादन नियम:
भाषा <math>L(G) = \left \{ a^{n}b^{n}c^{n} \mid n \ge 1 \right \}</math> ऊपर परिभाषित संदर्भ-मुक्त भाषा नहीं है, और यह संदर्भ-मुक्त भाषाओं के लिए पंपिंग लेम्मा का उपयोग करके कड़ाई से सिद्ध किया जा सकता है, लेकिन उदाहरण के लिए भाषा <math>\left \{ a^{n}b^{n} \mid n \ge 1 \right \}</math> (कम से कम 1 <math>a</math> के बाद समान संख्या में <math>b</math><nowiki>''</nowiki>s) संदर्भ-मुक्त है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है <math>G_2</math> साथ <math>N=\left \{S\right \}</math>, <math>\Sigma=\left \{a,b\right \}</math>, <math>S</math> प्रारंभ प्रतीक, और निम्नलिखित प्रस्तुतिकरण नियम:


: 1. <math>S \rightarrow aSb</math>
: 1. <math>S \rightarrow aSb</math>
: 2. <math>S \rightarrow ab</math>
: 2. <math>S \rightarrow ab</math>
एक संदर्भ-मुक्त भाषा में पहचाना जा सकता है <math>O(n^3)</math> समय ([[बिग ओ नोटेशन]] देखें) एक एल्गोरिथम द्वारा जैसे कि अर्ली पार्सर # एल्गोरिथम | अर्ली का पहचानकर्ता। अर्थात्, प्रत्येक संदर्भ-मुक्त भाषा के लिए, एक मशीन बनाई जा सकती है जो एक स्ट्रिंग को इनपुट के रूप में लेती है और निर्धारित करती है <math>O(n^3)</math> समय क्या स्ट्रिंग भाषा का सदस्य है, कहाँ <math>n</math> स्ट्रिंग की लंबाई है।<ref name="Earley1970">Earley, Jay, "[http://ra.adm.cs.cmu.edu/anon/home/anon/usr/ftp/scan/CMU-CS-68-earley.pdf An Efficient Context-Free Parsing Algorithm]," ''Communications of the ACM'', Vol. 13 No. 2, pp. 94-102, February 1970.</ref> [[नियतात्मक संदर्भ-मुक्त भाषा]]एँ संदर्भ-मुक्त भाषाओं का एक सबसेट है जिसे रैखिक समय में पहचाना जा सकता है।<ref>{{Cite journal | last1 = Knuth | first1 = D. E. | author-link = Donald Knuth | title = On the translation of languages from left to right | doi = 10.1016/S0019-9958(65)90426-2 | journal = Information and Control | volume = 8 | issue = 6 | pages = 607–639 | date = July 1965 | doi-access = free }}</ref> ऐसे कई एल्गोरिदम मौजूद हैं जो या तो भाषाओं के इस सेट या इसके कुछ सबसेट को लक्षित करते हैं।
एक संदर्भ-मुक्त भाषा में पहचाना जा सकता है <math>O(n^3)</math> समय ([[बिग ओ नोटेशन]] देखें) एक एल्गोरिथम द्वारा जैसे कि अर्ली पार्सर एल्गोरिथम अर्ली का पहचानकर्ता अर्थात्, प्रत्येक संदर्भ-मुक्त भाषा के लिए, एक मशीन बनाई जा सकती है जो एक स्ट्रिंग को इनपुट के रूप में लेती है और निर्धारित करती है <math>O(n^3)</math> समय क्या स्ट्रिंग भाषा का सदस्य है, जहा n स्ट्रिंग की लंबाई है। <ref name="Earley1970">Earley, Jay, "[http://ra.adm.cs.cmu.edu/anon/home/anon/usr/ftp/scan/CMU-CS-68-earley.pdf An Efficient Context-Free Parsing Algorithm]," ''Communications of the ACM'', Vol. 13 No. 2, pp. 94-102, February 1970.</ref> [[नियतात्मक संदर्भ-मुक्त भाषा]]एँ संदर्भ-मुक्त भाषाओं का एक सबसेट है जिसे रैखिक समय में पहचाना जा सकता है। <ref>{{Cite journal | last1 = Knuth | first1 = D. E. | author-link = Donald Knuth | title = On the translation of languages from left to right | doi = 10.1016/S0019-9958(65)90426-2 | journal = Information and Control | volume = 8 | issue = 6 | pages = 607–639 | date = July 1965 | doi-access = free }}</ref> ऐसे कई एल्गोरिदम उपस्थित है जो या तो भाषाओं के इस सेट या इसके कुछ सबसेट को लक्षित करते है।


=== नियमित व्याकरण ===
=== नियमित व्याकरण ===
नियमित व्याकरण में, बाएं हाथ का पक्ष फिर से केवल एक गैर-टर्मिनल प्रतीक है, लेकिन अब दायां हाथ भी प्रतिबंधित है। दाईं ओर खाली स्ट्रिंग, या एक एकल टर्मिनल प्रतीक, या एक एकल टर्मिनल प्रतीक हो सकता है, जिसके बाद एक गैर-टर्मिनल प्रतीक हो सकता है, लेकिन कुछ और नहीं। (कभी-कभी एक व्यापक परिभाषा का उपयोग किया जाता है: कोई भी बिना किसी अन्य चीज के टर्मिनलों या एकल गैर-टर्मिनलों के लंबे तार की अनुमति दे सकता है, जिससे भाषाओं की एक ही श्रेणी को परिभाषित करते हुए भाषाओं को वाक्यात्मक चीनी बना दिया जाता है।)
नियमित व्याकरण में, बायीं ओर केवल गैर-टर्मिनल प्रतीक होते है, लेकिन अब दायां हाथ भी प्रतिबंधित है। लेकिन अब दाहिनी ओर भी प्रतिबंधित है। एकल टर्मिनल प्रतीक, जिसके बाद एक गैर-टर्मिनल प्रतीक हो सकता है, लेकिन कुछ और नहीं है। कभी-कभी एक व्यापक परिभाषा का उपयोग किया जाता है: कोई भी बिना किसी अन्य चीज के टर्मिनलों या एकल गैर-टर्मिनलों के लंबे तार की अनुमति दे सकता है, जिससे भाषाओं को एक ही वर्ग की भाषाओं को परिभाषित करते हुए निरूपित करना आसान हो जाता है।


भाषा <math>\left \{ a^{n}b^{n} \mid n \ge 1 \right \}</math> ऊपर परिभाषित नियमित नहीं है, लेकिन भाषा है <math>\left \{ a^{n}b^{m} \mid m,n \ge 1 \right \}</math> (कम से कम 1 <math>a</math> उसके बाद कम से कम 1 <math>b</math>, जहां संख्या भिन्न हो सकती है) है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है <math>G_3</math> साथ <math>N=\left \{S, A,B\right \}</math>, <math>\Sigma=\left \{a,b\right \}</math>, <math>S</math> प्रारंभ प्रतीक, और निम्नलिखित उत्पादन नियम:
भाषा <math>\left \{ a^{n}b^{n} \mid n \ge 1 \right \}</math> ऊपर परिभाषित नियमित नहीं है, लेकिन भाषा<math>\left \{ a^{n}b^{m} \mid m,n \ge 1 \right \}</math> (कम से कम 1 1 a के बाद कम से कम 1 b, जहाँ संख्याएँ भिन्न हो सकती है) है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है है, <math>G_3</math> साथ <math>N=\left \{S, A,B\right \}</math>, <math>\Sigma=\left \{a,b\right \}</math>, <math>S</math> प्रारंभ प्रतीक, और निम्नलिखित प्रस्तुतिकरण नियम:


:# <math>S \rightarrow aA</math>
:# <math>S \rightarrow aA</math>
Line 147: Line 144:
:# <math>B \rightarrow bB</math>
:# <math>B \rightarrow bB</math>
:# <math>B \rightarrow \epsilon</math>
:# <math>B \rightarrow \epsilon</math>
एक नियमित व्याकरण द्वारा उत्पन्न सभी भाषाओं को पहचाना जा सकता है <math>O(n)</math> एक परिमित-राज्य मशीन द्वारा समय। हालांकि अभ्यास में, नियमित व्याकरण सामान्यतः [[नियमित अभिव्यक्ति]]यों का उपयोग करके व्यक्त किया जाता है, अभ्यास में उपयोग की जाने वाली नियमित अभिव्यक्ति के कुछ रूप नियमित रूप से नियमित भाषाओं को उत्पन्न नहीं करते हैं और उन विचलनों के कारण रैखिक मान्यतात्मक प्रदर्शन नहीं दिखाते हैं।
एक नियमित व्याकरण द्वारा उत्पन्न सभी भाषाओं को पहचाना जा सकता है <math>O(n)</math> समय परिमित-स्थित मशीन द्वारा। चूंकि अभ्यास में, नियमित व्याकरण सामान्यतः नियमित अभिव्यक्तियों का उपयोग करके व्यक्त किया जाता है, अभ्यास में उपयोग की जाने वाली नियमित अभिव्यक्ति के कुछ रूप नियमित रूप से नियमित भाषाओं को उत्पन्न नहीं करते है और उन विचलनों के कारण रैखिक मान्यतात्मक प्रदर्शन नहीं दिखाते है।


=== उत्पादक व्याकरण के अन्य रूप ===
=== उत्पादक व्याकरण के अन्य रूप ===
चॉम्स्की के औपचारिक व्याकरण के मूल पदानुक्रम पर कई विस्तार और विविधताएं भाषाविदों और कंप्यूटर वैज्ञानिकों द्वारा विकसित की गई हैं, सामान्यतः या तो उनकी अभिव्यंजक शक्ति को बढ़ाने के लिए या उन्हें विश्लेषण या पार्स करना आसान बनाने के लिए। विकसित व्याकरण के कुछ रूपों में सम्मलित हैं:
चॉम्स्की के औपचारिक व्याकरण के मूल पदानुक्रम पर कई विस्तार और विविधताएं भाषाविदों और कंप्यूटर वैज्ञानिकों द्वारा विकसित की गई है, सामान्यतः या तो उनकी अभिव्यंजक शक्ति को बढ़ाने के लिए या उन्हें विश्लेषण या पार्स करना आसान बनाने के लिए। विकसित व्याकरण के कुछ रूपों में सम्मलित है:


* ट्री-आसन्न व्याकरण केवल स्ट्रिंग्स के बजाय पार्स ट्री पर पुनर्लेखन नियमों को संचालित करने की अनुमति देकर पारंपरिक जनरेटिव व्याकरण की अभिव्यक्ति को बढ़ाते हैं।<ref name="JoshiEtAl1975">Joshi, Aravind K., ''et al.'', "[https://www.sciencedirect.com/science/article/pii/S0022000075800195/pdf?md5=82330b1e496c533551304514520a91e6&pid=1-s2.0-S0022000075800195-main.pdf Tree Adjunct Grammars]," ''Journal of Computer Systems Science'', Vol. 10 No. 1, pp. 136-163, 1975.</ref>
* ट्री-आसन्न व्याकरण केवल स्ट्रिंग्स अतिरिक्त पार्स ट्री पर पुनर्लेखन नियमों को संचालित करने की अनुमति देकर पारंपरिक जनरेटिव व्याकरण की अभिव्यक्ति को बढ़ाते है।<ref name="JoshiEtAl1975">Joshi, Aravind K., ''et al.'', "[https://www.sciencedirect.com/science/article/pii/S0022000075800195/pdf?md5=82330b1e496c533551304514520a91e6&pid=1-s2.0-S0022000075800195-main.pdf Tree Adjunct Grammars]," ''Journal of Computer Systems Science'', Vol. 10 No. 1, pp. 136-163, 1975.</ref>
* प्रत्यय व्याकरण<ref name="Koster1971">Koster , Cornelis H. A., "Affix Grammars," in ''ALGOL 68 Implementation'', North Holland Publishing Company, Amsterdam, p. 95-109, 1971.</ref> और [[विशेषता व्याकरण]]<ref name="Knuth1968">Knuth, Donald E., "[https://www.csee.umbc.edu/courses/331/fall16/01/resources/papers/Knuth67AG.pdf Semantics of Context-Free Languages]," ''Mathematical Systems Theory'', Vol. 2 No. 2, pp. 127-145, 1968.</ref><ref name="Knuth1971">Knuth, Donald E., "Semantics of Context-Free Languages (correction)," ''Mathematical Systems Theory'', Vol. 5 No. 1, pp 95-96, 1971.</ref> पुनर्लेखन नियमों को सिमेंटिक विशेषताओं और संचालन के साथ संवर्धित करने की अनुमति देता है, जो व्याकरण की अभिव्यक्ति बढ़ाने और व्यावहारिक भाषा अनुवाद उपकरणों के निर्माण के लिए उपयोगी होता है।
* प्रत्यय व्याकरण<ref name="Koster1971">Koster , Cornelis H. A., "Affix Grammars," in ''ALGOL 68 Implementation'', North Holland Publishing Company, Amsterdam, p. 95-109, 1971.</ref> और [[विशेषता व्याकरण]]<ref name="Knuth1968">Knuth, Donald E., "[https://www.csee.umbc.edu/courses/331/fall16/01/resources/papers/Knuth67AG.pdf Semantics of Context-Free Languages]," ''Mathematical Systems Theory'', Vol. 2 No. 2, pp. 127-145, 1968.</ref><ref name="Knuth1971">Knuth, Donald E., "Semantics of Context-Free Languages (correction)," ''Mathematical Systems Theory'', Vol. 5 No. 1, pp 95-96, 1971.</ref> पुनर्लेखन नियमों को अर्थ-संबंधी विशेषताओं और संचालन के साथ संवर्धित करने की अनुमति देता है, जो व्याकरण की अभिव्यक्ति बढ़ाने और व्यावहारिक भाषा अनुवाद उपकरणों के निर्माण के लिए उपयोगी होता है।


=== पुनरावर्ती व्याकरण ===
=== पुनरावर्ती व्याकरण ===
Line 159: Line 156:
पुनरावर्ती भाषा}}
पुनरावर्ती भाषा}}


एक पुनरावर्ती व्याकरण एक व्याकरण है जिसमें पुनरावर्ती उत्पादन नियम होते हैं। उदाहरण के लिए, एक संदर्भ-मुक्त भाषा के लिए एक व्याकरण [[बाएं रिकर्सन|वाम-पुनरावर्ती]] है यदि कोई गैर-टर्मिनल प्रतीक ए मौजूद है जिसे उत्पादन नियमों के माध्यम से ए के साथ सबसे बाएं प्रतीक के रूप में एक स्ट्रिंग बनाने के लिए रखा जा सकता है। <ref>[http://www.cs.may.ie/~jpower/Courses/parsing/parsing.pdf#search='indirect%20left%20recursion' Notes on Formal Language Theory and Parsing] {{Webarchive|url=https://web.archive.org/web/20170828232456/http://www.cs.may.ie/~jpower/Courses/parsing/parsing.pdf#search='indirect%20left%20recursion' |date=2017-08-28 }}, James Power, Department of Computer Science National University of Ireland, Maynooth Maynooth, Co. Kildare, Ireland.[[JPR02]]</ref> पुनरावर्ती व्याकरण का एक उदाहरण दो अल्पविरामों द्वारा अलग किए गए वाक्य के भीतर एक खंड है।<ref>{{Cite news|url=http://www.newspapers.com/image/205643445/|title=Songbirds grasp grammar, too|first=Seth|last=Borenstein|date=April 27, 2006|page=2|newspaper=Northwest Herald|via=Newspapers.com}}</ref> ओकोए पदानुक्रम में सभी प्रकार के व्याकरण पुनरावर्ती हो सकते हैं।{{citation needed|date=November 2019}}
एक पुनरावर्ती व्याकरण एक व्याकरण है जिसमें पुनरावर्ती प्रस्तुतिकरण नियम होते है। उदाहरण के लिए, एक संदर्भ-मुक्त भाषा के लिए एक व्याकरण [[बाएं रिकर्सन|वाम-पुनरावर्ती]] है यदि कोई गैर-टर्मिनल प्रतीक ए उपस्थित है जिसे प्रस्तुतिकरण नियमों के माध्यम से ए के साथ सबसे बाएं प्रतीक के रूप में एक स्ट्रिंग बनाने के लिए रखा जा सकता है। <ref>[http://www.cs.may.ie/~jpower/Courses/parsing/parsing.pdf#search='indirect%20left%20recursion' Notes on Formal Language Theory and Parsing] {{Webarchive|url=https://web.archive.org/web/20170828232456/http://www.cs.may.ie/~jpower/Courses/parsing/parsing.pdf#search='indirect%20left%20recursion' |date=2017-08-28 }}, James Power, Department of Computer Science National University of Ireland, Maynooth Maynooth, Co. Kildare, Ireland.[[JPR02]]</ref> पुनरावर्ती व्याकरण का एक उदाहरण दो अल्पविरामों द्वारा अलग किए गए वाक्य के भीतर एक खंड है।<ref>{{Cite news|url=http://www.newspapers.com/image/205643445/|title=Songbirds grasp grammar, too|first=Seth|last=Borenstein|date=April 27, 2006|page=2|newspaper=Northwest Herald|via=Newspapers.com}}</ref> ओकोए पदानुक्रम में सभी प्रकार के व्याकरण पुनरावर्ती हो सकते है।
== विश्लेषणात्मक व्याकरण ==
== विश्लेषणात्मक व्याकरण ==


यद्यपि [[पार्सिंग एल्गोरिदम]] पर साहित्य का एक अतिबृहत तत्व है, इनमें से अधिकांश एल्गोरिदम मानते हैं कि पार्स की जाने वाली भाषा को प्रारंभ में एक सामान्य औपचारिक व्याकरण के माध्यम से वर्णित किया गया है, और लक्ष्य इस उत्पादक व्याकरण को एक कार्यशील पार्सर में बदलना है। सही अर्थों में, एएक जनरेटिव व्याकरण किसी भाषा को पार्स करने के लिए उपयोग किए जाने वाले एल्गोरिदम के अनुरूप नहीं होता है, और विभिन्न एल्गोरिदम के उत्पादन नियमों के रूप में अलग-अलग प्रतिबंध होते हैं  जिन्हें अच्छी तरह से गठित माना जाता है।एक वैकल्पिक दृष्टिकोण पहली जगह में एक विश्लेषणात्मक व्याकरण के संदर्भ में भाषा को औपचारिक रूप देना है, जो भाषा के लिए एक पार्सर की संरचना और शब्दार्थ से अधिक सीधे मेल खाता है। विश्लेषणात्मक व्याकरण औपचारिकताओं के उदाहरणों में निम्नलिखित सम्मलित हैं:
यद्यपि [[पार्सिंग एल्गोरिदम]] पर साहित्य का एक अतिबृहत तत्व होता है, इनमें से अधिकांश एल्गोरिदम मानते है कि पार्स की जाने वाली भाषा को प्रारंभ में एक सामान्य औपचारिक व्याकरण के माध्यम से वर्णित किया गया है, और लक्ष्य इस उत्पादक व्याकरण को एक कार्यशील पार्सर में बदलना होता है। सही अर्थों में, एएक जनरेटिव व्याकरण किसी भाषा को पार्स करने के लिए उपयोग किए जाने वाले एल्गोरिदम के अनुरूप नहीं होता है, और विभिन्न एल्गोरिदम के प्रस्तुतिकरण नियमों के रूप में अलग-अलग प्रतिबंध होते है जिन्हें अच्छी तरह से गठित माना जाता है। एक वैकल्पिक दृष्टिकोण पहली जगह में एक विश्लेषणात्मक व्याकरण के संदर्भ में भाषा को औपचारिक रूप देना होता है, जो भाषा के लिए एक पार्सर की संरचना और शब्दार्थ से अधिक सीधे मेल खाता है। विश्लेषणात्मक व्याकरण औपचारिकताओं के उदाहरणों में निम्नलिखित सम्मलित है:
* [http://languagemachine.sourceforge.net/ लैंग्वेज मशीन] अप्रतिबंधित विश्लेषणात्मक व्याकरण लागू करती है। प्रतिस्थापन नियमों का उपयोग आउटपुट और व्यवहार उत्पन्न करने के लिए एक इनपुट को बदलने के लिए किया जाता है।सिस्टम [http://languagemachine.sourceforge.net/picturebook.html एलएम-आरेख] भी उत्पन्न कर सकता है, जो दिखाता है कि क्या होता है जब एक अप्रतिबंधित विश्लेषणात्मक व्याकरण के नियमों को लागू किया जा रहा है।
* [http://languagemachine.sourceforge.net/ भाषा मशीन] अप्रतिबंधित विश्लेषणात्मक व्याकरण लागू करती है। प्रतिस्थापन नियमों का उपयोग आउटपुट और व्यवहार उत्पन्न करने के लिए एक इनपुट को बदलने के लिए किया जाता है। प्रणाली [http://languagemachine.sourceforge.net/picturebook.html एलएम-आरेख] भी उत्पन्न कर सकता है, जो दिखाता है, कि क्या होता है जब एक अप्रतिबंधित विश्लेषणात्मक व्याकरण के नियमों को लागू किया जाता है।
* टॉप-डाउन पार्सिंग लैंग्वेज (टीडीपीएल): टॉप-डाउन पार्सर्स के व्यवहार का अध्ययन करने के लिए 1970 के दशक की शुरुआत में एक अत्यधिक न्यूनतम विश्लेषणात्मक व्याकरण औपचारिकता विकसित हुई। <ref name="Birman1970">Birman, Alexander, ''[http://bford.info/packrat/ref/birman70tmg.pdf The TMG Recognition Schema]'', Doctoral thesis, Princeton University, Dept. of Electrical Engineering, February 1970.</ref>
* टॉप-डाउन पार्सिंग भाषा (टीडीपीएल): टॉप-डाउन पार्सर्स के व्यवहार का अध्ययन करने के लिए 1970 के दशक की प्रारंभिक में एक अत्यधिक न्यूनतम विश्लेषणात्मक व्याकरण औपचारिकता विकसित हुई थी।<ref name="Birman1970">Birman, Alexander, ''[http://bford.info/packrat/ref/birman70tmg.pdf The TMG Recognition Schema]'', Doctoral thesis, Princeton University, Dept. of Electrical Engineering, February 1970.</ref>
* [[लिंक व्याकरण]]: भाषाविज्ञान के लिए डिज़ाइन किए गए विश्लेषणात्मक व्याकरण का एक रूप, जो शब्दों के जोड़े के बीच स्थितीय संबंधों की जांच करके वाक्य रचना संरचना प्राप्त करता है।<ref name="Sleater&Temperly1991">Sleator, Daniel D. & Temperly, Davy, "[https://arxiv.org/abs/cmp-lg/9508004 Parsing English with a Link Grammar]," Technical Report CMU-CS-91-196, Carnegie Mellon University Computer Science, 1991.</ref><ref name="Sleater&Temperly1993">Sleator, Daniel D. & Temperly, Davy, "Parsing English with a Link Grammar," ''Third International Workshop on Parsing Technologies'', 1993. (Revised version of above report.)</ref>
* [[लिंक व्याकरण]]: भाषाविज्ञान के लिए डिज़ाइन किए गए विश्लेषणात्मक व्याकरण का एक रूप, जो शब्दों के जोड़े के बीच स्थितीय संबंधों की जांच करके वाक्य रचना संरचना प्राप्त करता है।<ref name="Sleater&Temperly1991">Sleator, Daniel D. & Temperly, Davy, "[https://arxiv.org/abs/cmp-lg/9508004 Parsing English with a Link Grammar]," Technical Report CMU-CS-91-196, Carnegie Mellon University Computer Science, 1991.</ref><ref name="Sleater&Temperly1993">Sleator, Daniel D. & Temperly, Davy, "Parsing English with a Link Grammar," ''Third International Workshop on Parsing Technologies'', 1993. (Revised version of above report.)</ref>
* [[पार्सिंग अभिव्यक्ति व्याकरण]] (पीईजी): [[प्रोग्रामिंग भाषा]] और [[संकलक]] राइटर्स की व्यावहारिक [[अभिव्यक्ति (कंप्यूटर विज्ञान)]] आवश्यकताओं के आसपास डिजाइन किए गए टीडीपीएल का एक और हालिया सामान्यीकरण। <ref>Ford, Bryan, ''[https://dspace.mit.edu/bitstream/handle/1721.1/87310/51972156-MIT.pdf;sequence=2 Packrat Parsing: a Practical Linear-Time Algorithm with Backtracking]'', Master’s thesis, Massachusetts Institute of Technology, Sept. 2002.</ref>
* [[पार्सिंग अभिव्यक्ति व्याकरण]] (पीईजी): [[प्रोग्रामिंग भाषा]] और [[संकलक]] लेखकों की व्यावहारिक [[अभिव्यक्ति (कंप्यूटर विज्ञान)]] आवश्यकताओं के आसपास डिजाइन किए गए टीडीपीएल का एक और सामान्यीकरण होता है।<ref>Ford, Bryan, ''[https://dspace.mit.edu/bitstream/handle/1721.1/87310/51972156-MIT.pdf;sequence=2 Packrat Parsing: a Practical Linear-Time Algorithm with Backtracking]'', Master’s thesis, Massachusetts Institute of Technology, Sept. 2002.</ref>
 
 
== यह भी देखें ==
== यह भी देखें ==
{{div col|colwidth=22em}}
{{div col|colwidth=22em}}
Line 192: Line 187:


==बाहरी संबंध==
==बाहरी संबंध==
{{Formal languages and grammars}}
{{Mathematical logic}}
{{Mathematical logic}}
{{Authority control}}
{{Authority control}}
[[Category: औपचारिक भाषाएँ]] [[Category: व्याकरण]] [[Category: गणितीय तर्क]] [[Category: वाक्य - विन्यास]] [[Category: ऑटोमेटा (गणना)]]


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Collapse templates]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Mathematics navigational boxes]]
[[Category:Multi-column templates]]
[[Category:Navbox orphans]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages using div col with small parameter]]
[[Category:Pages with empty portal template]]
[[Category:Pages with script errors]]
[[Category:Philosophy and thinking navigational boxes]]
[[Category:Portal-inline template with redlinked portals]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Translated in Hindi]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Templates using under-protected Lua modules]]
[[Category:Webarchive template wayback links]]
[[Category:Wikipedia fully protected templates|Div col]]
[[Category:Wikipedia metatemplates]]
[[Category:ऑटोमेटा (गणना)]]
[[Category:औपचारिक भाषाएँ]]
[[Category:गणितीय तर्क]]
[[Category:वाक्य - विन्यास]]
[[Category:व्याकरण]]

Latest revision as of 14:58, 16 March 2023

औपचारिक भाषा सिद्धांत में, व्याकरण (जब संदर्भ नहीं दिया जाता है, जिसे अधिकांशतः स्पष्टता के लिए एक औपचारिक व्याकरण कहा जाता है) वर्णन करता है कि किसी भाषा के वर्णमाला से श्रृंखला कैसे बनाये जाते है जो भाषा के वाक्य-विन्यास के अनुसार मान्य होते है। व्याकरण शब्दार्थ का वर्णन नहीं करता है जबकि किसी भी संदर्भ में उनके साथ क्या किया जा सकता है - केवल उनका रूप का भी वर्णन करता है औपचारिक व्याकरण को औपचारिक भाषा में ऐसे श्रृंखला के प्रस्तुतिकरण नियमों को सेट के रूप में परिभाषित किया जाता है।

औपचारिक भाषा सिद्धांत, अनुशासन जो औपचारिक व्याकरण और भाषाओं का अध्ययन करता है, अनुप्रयुक्त गणित की एक शाखा है। इसके अनुप्रयोग सैद्धांतिक कंप्यूटर विज्ञान, सैद्धांतिक भाषाविज्ञान, औपचारिक शब्दार्थ (तर्क), गणितीय तर्क और अन्य क्षेत्रों में पाए जाते है।

औपचारिक व्याकरण नियमों का एक समूह है, जिससे पुनर्लेखन प्रारंभ होता है। इसलिए, व्याकरण को सामान्यतः भाषा जनरेटर के रूप में जाना जाता है। चूँकि, इसे कभी-कभी पहचानकर्ता के आधार के रूप में भी उपयोग किया जा सकता है - कंप्यूटिंग में एक फ़ंक्शन जो यह निर्धारित करता है कि दी गई स्ट्रिंग भाषा से संबंधित है या व्याकरणिक रूप से गलत है। ऐसे पहचानकर्ताओं का वर्णन करने के लिए, औपचारिक भाषा सिद्धांत अलग औपचारिकता का उपयोग करता है, जिसे ऑटोमेटा सिद्धांत के रूप में जाना जाता है। ऑटोमेटा सिद्धांत के रोचक परिणामों में से एक यह है कि कुछ औपचारिक भाषाओं के लिए पहचानकर्ता को डिजाइन करना संभव नहीं होता है।[1] पार्सिंग एक उच्चारण (प्राकृतिक भाषाओं में एक स्ट्रिंग) को प्रतीकों के सेट को खंडन करके और भाषा के व्याकरण के विपरीत, प्रत्येक का विश्लेषण करके पहचानने की प्रक्रिया है। अधिकांश भाषाओं में उनके कथनों के अर्थ उनके वाक्य-विन्यास के अनुसार संरचित होते है - एक अभ्यास जिसे रचनात्मक शब्दार्थ के रूप में जाना जाता है। परिणाम स्वरुप, भाषा में एक उच्चारण के अर्थ का वर्णन करने के लिए पहला कदम यह है कि इसे अलग-अलग हिस्सों में विभाजित किया जाए और इसके विश्लेषित रूप को देखा जाए (कंप्यूटर विज्ञान में इसे पार्स ट्री के रूप में जाना जाता है, और जनरेटिक व्याकरण में गहरी संरचना और सतह संरचना के रूप में जाना जाता है)।

इतिहास

पाणिनि' का ग्रंथ अष्टाध्यायी संस्कृत के औपचारिक व्याकरण का वर्णन करने के लिए औपचारिक नियम और परिभाषाएँ देता है।[2] प्रपत्र और औपचारिकता के विभिन्न उपयोग है, जो समय के साथ बदल गए है, संबंधित लेखक के संपर्क में आने वाले क्षेत्रों के आधार पर, अवधारणा का एक ऐतिहासिक अवलोकन [3] में दिया गया है।

परिचयात्मक उदाहरण

एक व्याकरण मुख्य रूप से प्रस्तुतिकरण (कंप्यूटर विज्ञान) का एक सेट होता है, श्रृंखला को बदलने के लिए नियमों को फिर से लिखना होता है। प्रत्येक नियम एक विशेष स्ट्रिंग (इसके बाएँ हाथ की ओर) को दूसरे (इसके दाएँ हाथ की ओर) के प्रतिस्थापन को निर्दिष्ट करता है। प्रत्येक स्ट्रिंग पर एक नियम लागू किया जा सकता है जिसमें इसकी बाईं ओर सम्मलित होता है और एक स्ट्रिंग उत्पन्न करता है जिसमें उस बाएं हाथ की घटना को उसके दाएं हाथ से बदल दिया जाता है।

अर्ध-थू प्रणाली के विपरीत, जो पूरी तरह से इन नियमों द्वारा परिभाषित है, व्याकरण आगे दो प्रकार के प्रतीकों के बीच अंतर करता है: गैर-टर्मिनल, टर्मिनल प्रतीक, प्रत्येक बाईं ओर कम से कम एक गैर-टर्मिनल प्रतीक होना चाहिए। यह एक विशेष गैर-टर्मिनल प्रतीक को भी अलग करता है, जिसे प्रारंभ प्रतीक कहा जाता है।

व्याकरण द्वारा उत्पन्न भाषा को बिना किसी गैर-टर्मिनल प्रतीकों के सभी स्ट्रिंग्स के सेट के रूप में परिभाषित किया जाता है, जो कि किसी भी तरह से अपने नियमों के अनुप्रयोग (संभावित रूप से दोहराए गए) द्वारा एकल प्रारंभ प्रतीक वाले स्ट्रिंग से उत्पन्न किया जा सकता है। यदि एक ही स्ट्रिंग को उत्पन्न करने के अनिवार्य रूप से अलग-अलग विधि है, तो व्याकरण को अस्पष्ट व्याकरण कहा जाता है।

निम्नलिखित उदाहरणों में, टर्मिनल प्रतीक ए और बी है, और प्रारंभ प्रतीक एस है।

उदाहरण 1

मान लीजिए कि हमारे पास निम्नलिखित प्रस्तुतिकरण नियम है:

1.
2.

तो हम S से प्रारंभ करते है, और इसे लागू करने के लिए नियम चुन सकते है। यदि हम नियम 1 चुनते हैं, तो हमें स्ट्रिंग aSb प्राप्त होती है। यदि हम नियम 1 को फिर से चुनते हैं, तो हम S को aSb से बदल देते हैं और स्ट्रिंग aaSbb प्राप्त करते हैं। यदि अब हम नियम 2 चुनते हैं, तो हम S को ba से प्रतिस्थापित करते हैं और स्ट्रिंग aababb प्राप्त करते हैं, और किया जाता है। हम प्रतीकों का उपयोग करके विकल्पों की इस श्रृंखला को और संक्षेप में लिख सकते है:

.

व्याकरण की भाषा अनंत समुच्चय है , जहां है दोहराया गया के समय (और n विशेष रूप से प्रस्तुतिकरण नियम 1 लागू होने की संख्या का प्रतिनिधित्व करता है)। यह व्याकरण संदर्भ-मुक्त है (केवल एकल गैर-टर्मिनल बाईं ओर दिखाई देते है) और असंदिग्ध है।

उदाहरण 2 और 3

मान लीजिए नियम इसके अतिरिक्त है:

1.
2.
3.

यह व्याकरण नियम 3 के कारण संदर्भ-मुक्त नहीं है और यह कई तरीकों के कारण अस्पष्ट है जिसमें नियम 2 का उपयोग क्रम उत्पन्न करने के लिए किया जा सकता है एस।

चूँकि, यह जो भाषा उत्पन्न करता है, वह केवल सभी गैर-खाली श्रृंखला का समूह है एस और/या एस के रूप में।

यह देखना आसान है: एस और/या एस। यह देखना आसान है: उत्पन्न करने के लिए एक से , जनरेट करने के लिए नियम 2 का दो बार उपयोग करें , फिर नियम 1 दो बार और नियम 3 एक बार उत्पन्न करने के लिए . इसका मतलब है कि हम मनमाने ढंग से गैर-खाली अनुक्रम उत्पन्न कर सकते है एस और फिर उनमें से प्रत्येक को इसके साथ बदलें या जैसा हम चाहते है।

वही भाषा वैकल्पिक रूप से एक संदर्भ-मुक्त, असंदिग्ध व्याकरण द्वारा उत्पन्न की जा सकती है; उदाहरण के लिए, नियमों के साथ नियमित व्याकरण

1.
2.
3.
4.

औपचारिक परिभाषा

व्याकरण का वाक्य-विन्यास

1950 के दशक में पहली बार नोम चौमस्की द्वारा प्रस्तावित जनरेटिव व्याकरण की क्लासिक औपचारिकता में,[4][5] एक व्याकरण G में निम्नलिखित घटक होते है:

:कहाँ क्लेन स्टार ऑपरेटर है और संघ (सेट सिद्धांत) को दर्शाता है। यही है, प्रत्येक प्रस्तुतिकरण नियम प्रतीकों की एक स्ट्रिंग से दूसरे में मैप करता है, जहां पहली स्ट्रिंग (सिर) में मनमाने ढंग से प्रतीकों की संख्या होती है, बशर्ते उनमें से कम से कम एक गैर-टर्मिनल हो। स्थितियों में कि दूसरी स्ट्रिंग में केवल रिक्त स्ट्रिंग होती है-अर्थात, इसमें कोई प्रतीक नहीं होता है- इसे एक विशेष संकेतन के साथ दर्शाया जा सकता है (अधिकांशतः , ई या ) भ्रम से बचने के लिए।
  • एक विशिष्ट प्रतीक वह प्रारंभ चिह्न है, जिसे वाक्य चिह्न भी कहा जाता है।

एक व्याकरण को औपचारिक रूप से टपल के रूप में परिभाषित किया जाता है . इस तरह के एक औपचारिक व्याकरण को अधिकांशतः साहित्य में पुनर्लेखन प्रणाली या वाक्यांश संरचना व्याकरण कहा जाता है।[6][7]

औपचारिक व्याकरण के संबंध में कुछ गणितीय निर्माण

स्ट्रिंग्स पर संबंधों के संदर्भ में व्याकरण के संचालन को परिभाषित किया जा सकता है:

  • एक व्याकरण दिया , द्विआधारी संबंध (उच्चारण जी के रूप में एक चरण में प्राप्त होता है) में तार पर द्वारा परिभाषित किया गया है:
  • रिश्ता (जी के रूप में उच्चारित शून्य या अधिक चरणों में होता है) को रिफ्लेक्सिव सकर्मक बंद होने के रूप में परिभाषित किया गया है
  • ए वाक्यात्मक रूप का सदस्य है जिसे स्टार्ट सिंबल से सीमित संख्या में चरणों में प्राप्त किया जा सकता है ; अर्थात्, एक वाक्यात्मक रूप का सदस्य है . एक वाक्यात्मक रूप जिसमें कोई गैर-टर्मिनल प्रतीक नहीं है (अर्थात इसका सदस्य है ) वाक्य कहलाता है।[8]
  • की भाषा , इस रूप में घोषित किया गया , द्वारा निर्मित वाक्यों के सेट के रूप में परिभाषित किया गया है .

ध्यान दें कि व्याकरण प्रभावी रूप से अर्ध-थू प्रणाली है , ठीक उसी तरह से तार को फिर से लिखना; एकमात्र अंतर यह है कि हम विशिष्ट गैर-टर्मिनल प्रतीकों को अलग करते है, जिन्हें पुनर्लेखन नियमों में फिर से लिखा जाना चाहिए, और केवल निर्दिष्ट प्रारंभ प्रतीक से पुनर्लेखन में रुचि रखते है गैर-टर्मिनल प्रतीकों के बिना तार के लिए।

उदाहरण

इन उदाहरणों के लिए, सेट-बिल्डर नोटेशन का उपयोग करके औपचारिक भाषाएँ निर्दिष्ट की जाती है।

व्याकरण पर विचार करें कहाँ , , प्रारंभ प्रतीक है, और निम्नलिखित प्रस्तुतिकरण नियमों के होते है:

1.
2.
3.
4.

यह व्याकरण भाषा को परिभाषित करता है कहाँ लगातार n की एक स्ट्रिंग को दर्शाता है 'एस। इस प्रकार, भाषा श्रृंखला का समूह है जिसमें 1 या अधिक होते है की, उसके बाद समान संख्या में की, उसके बाद समान संख्या में 'एस।

स्ट्रिंग्स की व्युत्पत्ति के कुछ उदाहरण है:

(नोटेशन पर ध्यान दें: स्ट्रिंग पढ़ता है P तार उत्पन्न करता है Q प्रस्तुतिकरण के माध्यम से i, और उत्पन्न भाग को हर बार बोल्ड टाइप में इंगित किया जाता है।)

चॉम्स्की पदानुक्रम

जब नोम चॉम्स्की ने पहली बार 1956 में जनरेटिव व्याकरण को औपचारिक रूप दिया,[4]उन्होंने उन्हें प्रकारों में वर्गीकृत किया जिसे अब चॉम्स्की पदानुक्रम के रूप में जाना जाता है। इन प्रकारों के बीच अंतर यह है कि उनके प्रस्तुतिकरण के सख्त नियम है और इसलिए वे कम औपचारिक भाषाओं को व्यक्त कर सकते है। दो महत्वपूर्ण प्रकार है संदर्भ-मुक्त व्याकरण (प्रकार 2) और नियमित व्याकरण (प्रकार 3)। ऐसे व्याकरण से जिन भाषाओं का वर्णन किया जा सकता है, उन्हें क्रमशः संदर्भ-मुक्त भाषाएँ और नियमित भाषाएँ कहा जाता है। चूंकि अप्रतिबंधित व्याकरण (टाइप 0) की तुलना में बहुत कम शक्तिशाली होता है, जो वास्तव में किसी भी भाषा को व्यक्त कर सकता है जिसे ट्यूरिंग मशीन द्वारा स्वीकार किया जा सकता है, इन दो प्रतिबंधित प्रकार के व्याकरणों का सबसे अधिक उपयोग किया जाता है क्योंकि उनके लिए पारसर्स को कुशलता से लागू किया जा सकता है।[9] उदाहरण के लिए, सभी नियमित भाषाओं को एक परिमित-स्थित मशीन द्वारा पहचाना जा सकता है, और संदर्भ-मुक्त व्याकरण के उपयोगी उपसमुच्चय के लिए कुशल एलएल पार्सर और एलआर पार्सर उत्पन्न करने के लिए जाने-माने एल्गोरिदम होते है जो व्याकरण उत्पन्न करने वाली संबंधित भाषाओं को पहचानते है।

प्रसंग-मुक्त व्याकरण

संदर्भ-मुक्त व्याकरण वह व्याकरण है जिसमें प्रत्येक प्रस्तुतिकरण नियम के बाईं ओर केवल एक गैर-टर्मिनल प्रतीक होता है। यह प्रतिबंध गैर-तुच्छ है; संदर्भ-मुक्त व्याकरण द्वारा सभी भाषाएँ उत्पन्न नहीं की जा सकतीं। जिन्हें संदर्भ-मुक्त भाषा कहा जा सकता है।

भाषा ऊपर परिभाषित संदर्भ-मुक्त भाषा नहीं है, और यह संदर्भ-मुक्त भाषाओं के लिए पंपिंग लेम्मा का उपयोग करके कड़ाई से सिद्ध किया जा सकता है, लेकिन उदाहरण के लिए भाषा (कम से कम 1 के बाद समान संख्या में ''s) संदर्भ-मुक्त है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है साथ , , प्रारंभ प्रतीक, और निम्नलिखित प्रस्तुतिकरण नियम:

1.
2.

एक संदर्भ-मुक्त भाषा में पहचाना जा सकता है समय (बिग ओ नोटेशन देखें) एक एल्गोरिथम द्वारा जैसे कि अर्ली पार्सर एल्गोरिथम अर्ली का पहचानकर्ता अर्थात्, प्रत्येक संदर्भ-मुक्त भाषा के लिए, एक मशीन बनाई जा सकती है जो एक स्ट्रिंग को इनपुट के रूप में लेती है और निर्धारित करती है समय क्या स्ट्रिंग भाषा का सदस्य है, जहा n स्ट्रिंग की लंबाई है। [10] नियतात्मक संदर्भ-मुक्त भाषाएँ संदर्भ-मुक्त भाषाओं का एक सबसेट है जिसे रैखिक समय में पहचाना जा सकता है। [11] ऐसे कई एल्गोरिदम उपस्थित है जो या तो भाषाओं के इस सेट या इसके कुछ सबसेट को लक्षित करते है।

नियमित व्याकरण

नियमित व्याकरण में, बायीं ओर केवल गैर-टर्मिनल प्रतीक होते है, लेकिन अब दायां हाथ भी प्रतिबंधित है। लेकिन अब दाहिनी ओर भी प्रतिबंधित है। एकल टर्मिनल प्रतीक, जिसके बाद एक गैर-टर्मिनल प्रतीक हो सकता है, लेकिन कुछ और नहीं है। कभी-कभी एक व्यापक परिभाषा का उपयोग किया जाता है: कोई भी बिना किसी अन्य चीज के टर्मिनलों या एकल गैर-टर्मिनलों के लंबे तार की अनुमति दे सकता है, जिससे भाषाओं को एक ही वर्ग की भाषाओं को परिभाषित करते हुए निरूपित करना आसान हो जाता है।

भाषा ऊपर परिभाषित नियमित नहीं है, लेकिन भाषा (कम से कम 1 1 a के बाद कम से कम 1 b, जहाँ संख्याएँ भिन्न हो सकती है) है, क्योंकि इसे व्याकरण द्वारा परिभाषित किया जा सकता है है, साथ , , प्रारंभ प्रतीक, और निम्नलिखित प्रस्तुतिकरण नियम:

एक नियमित व्याकरण द्वारा उत्पन्न सभी भाषाओं को पहचाना जा सकता है समय परिमित-स्थित मशीन द्वारा। चूंकि अभ्यास में, नियमित व्याकरण सामान्यतः नियमित अभिव्यक्तियों का उपयोग करके व्यक्त किया जाता है, अभ्यास में उपयोग की जाने वाली नियमित अभिव्यक्ति के कुछ रूप नियमित रूप से नियमित भाषाओं को उत्पन्न नहीं करते है और उन विचलनों के कारण रैखिक मान्यतात्मक प्रदर्शन नहीं दिखाते है।

उत्पादक व्याकरण के अन्य रूप

चॉम्स्की के औपचारिक व्याकरण के मूल पदानुक्रम पर कई विस्तार और विविधताएं भाषाविदों और कंप्यूटर वैज्ञानिकों द्वारा विकसित की गई है, सामान्यतः या तो उनकी अभिव्यंजक शक्ति को बढ़ाने के लिए या उन्हें विश्लेषण या पार्स करना आसान बनाने के लिए। विकसित व्याकरण के कुछ रूपों में सम्मलित है:

  • ट्री-आसन्न व्याकरण केवल स्ट्रिंग्स अतिरिक्त पार्स ट्री पर पुनर्लेखन नियमों को संचालित करने की अनुमति देकर पारंपरिक जनरेटिव व्याकरण की अभिव्यक्ति को बढ़ाते है।[12]
  • प्रत्यय व्याकरण[13] और विशेषता व्याकरण[14][15] पुनर्लेखन नियमों को अर्थ-संबंधी विशेषताओं और संचालन के साथ संवर्धित करने की अनुमति देता है, जो व्याकरण की अभिव्यक्ति बढ़ाने और व्यावहारिक भाषा अनुवाद उपकरणों के निर्माण के लिए उपयोगी होता है।

पुनरावर्ती व्याकरण

एक पुनरावर्ती व्याकरण एक व्याकरण है जिसमें पुनरावर्ती प्रस्तुतिकरण नियम होते है। उदाहरण के लिए, एक संदर्भ-मुक्त भाषा के लिए एक व्याकरण वाम-पुनरावर्ती है यदि कोई गैर-टर्मिनल प्रतीक ए उपस्थित है जिसे प्रस्तुतिकरण नियमों के माध्यम से ए के साथ सबसे बाएं प्रतीक के रूप में एक स्ट्रिंग बनाने के लिए रखा जा सकता है। [16] पुनरावर्ती व्याकरण का एक उदाहरण दो अल्पविरामों द्वारा अलग किए गए वाक्य के भीतर एक खंड है।[17] ओकोए पदानुक्रम में सभी प्रकार के व्याकरण पुनरावर्ती हो सकते है।

विश्लेषणात्मक व्याकरण

यद्यपि पार्सिंग एल्गोरिदम पर साहित्य का एक अतिबृहत तत्व होता है, इनमें से अधिकांश एल्गोरिदम मानते है कि पार्स की जाने वाली भाषा को प्रारंभ में एक सामान्य औपचारिक व्याकरण के माध्यम से वर्णित किया गया है, और लक्ष्य इस उत्पादक व्याकरण को एक कार्यशील पार्सर में बदलना होता है। सही अर्थों में, एएक जनरेटिव व्याकरण किसी भाषा को पार्स करने के लिए उपयोग किए जाने वाले एल्गोरिदम के अनुरूप नहीं होता है, और विभिन्न एल्गोरिदम के प्रस्तुतिकरण नियमों के रूप में अलग-अलग प्रतिबंध होते है जिन्हें अच्छी तरह से गठित माना जाता है। एक वैकल्पिक दृष्टिकोण पहली जगह में एक विश्लेषणात्मक व्याकरण के संदर्भ में भाषा को औपचारिक रूप देना होता है, जो भाषा के लिए एक पार्सर की संरचना और शब्दार्थ से अधिक सीधे मेल खाता है। विश्लेषणात्मक व्याकरण औपचारिकताओं के उदाहरणों में निम्नलिखित सम्मलित है:

  • भाषा मशीन अप्रतिबंधित विश्लेषणात्मक व्याकरण लागू करती है। प्रतिस्थापन नियमों का उपयोग आउटपुट और व्यवहार उत्पन्न करने के लिए एक इनपुट को बदलने के लिए किया जाता है। प्रणाली एलएम-आरेख भी उत्पन्न कर सकता है, जो दिखाता है, कि क्या होता है जब एक अप्रतिबंधित विश्लेषणात्मक व्याकरण के नियमों को लागू किया जाता है।
  • टॉप-डाउन पार्सिंग भाषा (टीडीपीएल): टॉप-डाउन पार्सर्स के व्यवहार का अध्ययन करने के लिए 1970 के दशक की प्रारंभिक में एक अत्यधिक न्यूनतम विश्लेषणात्मक व्याकरण औपचारिकता विकसित हुई थी।[18]
  • लिंक व्याकरण: भाषाविज्ञान के लिए डिज़ाइन किए गए विश्लेषणात्मक व्याकरण का एक रूप, जो शब्दों के जोड़े के बीच स्थितीय संबंधों की जांच करके वाक्य रचना संरचना प्राप्त करता है।[19][20]
  • पार्सिंग अभिव्यक्ति व्याकरण (पीईजी): प्रोग्रामिंग भाषा और संकलक लेखकों की व्यावहारिक अभिव्यक्ति (कंप्यूटर विज्ञान) आवश्यकताओं के आसपास डिजाइन किए गए टीडीपीएल का एक और सामान्यीकरण होता है।[21]

यह भी देखें


संदर्भ

  1. Meduna, Alexander (2014), Formal Languages and Computation: Models and Their Applications, CRC Press, p. 233, ISBN 9781466513457. For more on this subject, see undecidable problem.
  2. "Panini biography". www-history.mcs.st-andrews.ac.uk. Archived from the original on 2018-08-15.
  3. McElvenny J (2019). McElvenny J (ed.). Form and formalism in linguistics (pdf). Berlin: Language Science Press. doi:10.5281/zenodo.2654375. ISBN 978-3-96110-182-5.
  4. 4.0 4.1 Chomsky, Noam (Sep 1956). "Three models for the description of language". IRE Transactions on Information Theory. 2 (3): 113–124. doi:10.1109/TIT.1956.1056813.
  5. Chomsky, Noam (1957). Syntactic Structures. The Hague: Mouton.
  6. Ginsburg, Seymour (1975). Algebraic and automata theoretic properties of formal languages. North-Holland. pp. 8–9. ISBN 978-0-7204-2506-2.
  7. Harrison, Michael A. (1978). Introduction to Formal Language Theory. Reading, Mass.: Addison-Wesley Publishing Company. p. 13. ISBN 978-0-201-02955-0.
  8. Sentential Forms, Context-Free Grammars, David Matuszek
  9. Grune, Dick & Jacobs, Ceriel H., Parsing Techniques – A Practical Guide, Ellis Horwood, England, 1990.
  10. Earley, Jay, "An Efficient Context-Free Parsing Algorithm," Communications of the ACM, Vol. 13 No. 2, pp. 94-102, February 1970.
  11. Knuth, D. E. (July 1965). "On the translation of languages from left to right". Information and Control. 8 (6): 607–639. doi:10.1016/S0019-9958(65)90426-2.
  12. Joshi, Aravind K., et al., "Tree Adjunct Grammars," Journal of Computer Systems Science, Vol. 10 No. 1, pp. 136-163, 1975.
  13. Koster , Cornelis H. A., "Affix Grammars," in ALGOL 68 Implementation, North Holland Publishing Company, Amsterdam, p. 95-109, 1971.
  14. Knuth, Donald E., "Semantics of Context-Free Languages," Mathematical Systems Theory, Vol. 2 No. 2, pp. 127-145, 1968.
  15. Knuth, Donald E., "Semantics of Context-Free Languages (correction)," Mathematical Systems Theory, Vol. 5 No. 1, pp 95-96, 1971.
  16. Notes on Formal Language Theory and Parsing Archived 2017-08-28 at the Wayback Machine, James Power, Department of Computer Science National University of Ireland, Maynooth Maynooth, Co. Kildare, Ireland.JPR02
  17. Borenstein, Seth (April 27, 2006). "Songbirds grasp grammar, too". Northwest Herald. p. 2 – via Newspapers.com.
  18. Birman, Alexander, The TMG Recognition Schema, Doctoral thesis, Princeton University, Dept. of Electrical Engineering, February 1970.
  19. Sleator, Daniel D. & Temperly, Davy, "Parsing English with a Link Grammar," Technical Report CMU-CS-91-196, Carnegie Mellon University Computer Science, 1991.
  20. Sleator, Daniel D. & Temperly, Davy, "Parsing English with a Link Grammar," Third International Workshop on Parsing Technologies, 1993. (Revised version of above report.)
  21. Ford, Bryan, Packrat Parsing: a Practical Linear-Time Algorithm with Backtracking, Master’s thesis, Massachusetts Institute of Technology, Sept. 2002.


बाहरी संबंध