नियमित बनाम संदर्भ मुक्त व्याकरण


96

मैं अपनी कंप्यूटिंग भाषाओं के परीक्षण के लिए अध्ययन कर रहा हूं , और एक विचार है कि मुझे अपना सिर लपेटने में समस्या हो रही है।

मैं समझ गया कि नियमित व्याकरण सरल हैं और इसमें अस्पष्टता नहीं हो सकती है, लेकिन प्रोग्रामिंग भाषाओं के लिए बहुत सारे कार्य नहीं किए जा सकते हैं। मैं यह भी समझता था कि संदर्भ-मुक्त व्याकरण अस्पष्टता की अनुमति देता है, लेकिन प्रोग्रामिंग भाषाओं (जैसे palindromes) के लिए आवश्यक कुछ चीजों के लिए अनुमति देता है।

मुझे यह समझने में परेशानी हो रही है कि मैं यह कैसे जान सकता हूं कि नियमित व्याकरणविज्ञानी एक टर्मिनल या नॉनटर्मिनल के लिए एक टर्मिनल के बाद मैप कर सकते हैं या एक संदर्भ-मुक्त नॉनटर्मिनल मैप्स जो टर्मिनल और नॉनटर्मिनल के किसी भी संयोजन के लिए है। ।

किसी ने मुझे यह सब एक साथ रखने में मदद कर सकते हैं?

जवाबों:


70

नियमित व्याकरण या तो दाएं या बाएं रैखिक होता है, जबकि संदर्भ मुक्त व्याकरण मूल रूप से टर्मिनलों और गैर-टर्मिनलों का कोई संयोजन होता है। इसलिए आप देख सकते हैं कि नियमित व्याकरण संदर्भ-मुक्त व्याकरण का सबसेट है।

उदाहरण के लिए, एक पलिंड्रोम के लिए, फॉर्म का है,

S->ABA
A->something
B->something

आप स्पष्ट रूप से देख सकते हैं कि palindromes को नियमित व्याकरण में व्यक्त नहीं किया जा सकता है क्योंकि इसे दाएं या बाएं रैखिक होने की आवश्यकता होती है और जैसे कि दोनों तरफ एक गैर-टर्मिनल नहीं हो सकता है।

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


13
पहला: नियमित व्याकरण अस्पष्ट हो सकता है (काई कुचेनबेकर से उदाहरण: S -> AA | aB, B -> a, A -> a)। केवल एक चीज यह है कि सिंटैक्स ट्री में नोड्स केवल एक ही तरीका है जिसे पोस्ट किया जा सकता है (उदाहरण के लिए जब नियमित व्याकरण का उपयोग किया जाता है तो सहक्रियाशीलता अस्पष्टता मौजूद नहीं होती है)। दूसरा: एक गैर-टर्मिनल के लिए एक से अधिक दाहिने हाथ की ओर हो सकता है (ए -> ए, ए -> एए; और विकिपीडिया में तीसरे विकल्प के रूप में एप्सिलॉन भी शामिल है: en.wikipedia.org/wiki/Regular-grammar )
user764754

1
अस्पष्टता तब आती है जब एक वाक्य आपके व्याकरण से एक से अधिक व्युत्पत्ति पथ में प्राप्त किया जा सकता है। बस एक गैर-टर्मिनल के लिए एक से अधिक उत्पादन नियम होने से व्याकरण अस्पष्ट नहीं होता है
सुजॉय

11
यह उदाहरण वास्तव में गलत है। यदि हम पूर्ण नियमों की कल्पना करते हैं A-> a | cऔर B->bफिर यह व्याकरण गैर-तालमेल की अनुमति देता है। उदाहरण के लिए, मैं उत्पादन कर सकता हूं S->ABA->aBA->abA->abc:। समस्या यह है कि हम पहले नियम में दो चर का उत्पादन नहीं करना चाहते हैं, बल्कि दो टर्मिनलों का उत्पादन करना चाहते हैं। एक व्याकरण के लिए एक संभावना जो S -> aSa | bSb | a | b
पैलिंड्रोमस की

वहाँ palindromes कि एक नियमित व्याकरण में व्यक्त किया जा सकता है: palindromes कि एक एकल चरित्र से मिलकर बनता है। उदाहरण के लिए, S -> aSa | eऔर a(aa)*aदोनों एक नियमित भाषा का वर्णन करते हैं। इससे पता चलता है कि सीएफजी एक नियमित भाषा का वर्णन कर सकता है, भले ही वह बाएं या दाएं रैखिकता का उल्लंघन करता हो। जाहिर है, यह एक स्पष्ट-स्पष्ट पैलिंड्रोम है ..
मार्टिग्न

यह सोचने के लिए आओ, यह जवाब वास्तव में गलत है। यह कहता है कि "संदर्भ-मुक्त" व्याकरण मूल रूप से टर्मिनलों और गैर-टर्मिनलों का कोई संयोजन है। "हालांकि, tu ^ nvw ^ mxy ^ kz टर्मिनलों और गैर-वर्णनों का एक संयोजन है, लेकिन संदर्भ-मुक्त नहीं है।
चार्ली मार्टिन

58

मुझे लगता है कि आप जो सोचना चाहते हैं वह विभिन्न पंपिंग लेम्माटा हैं। एक नियमित भाषा को परिमित ऑटोमोटन द्वारा पहचाना जा सकता है। एक संदर्भ-मुक्त भाषा के लिए एक स्टैक की आवश्यकता होती है, और एक संदर्भ संवेदनशील भाषा के लिए दो स्टैक की आवश्यकता होती है (जो यह कहने के बराबर है कि इसके लिए पूर्ण TIT मशीन की आवश्यकता है।)

इसलिए, यदि हम नियमित भाषाओं के लिए पम्पिंग लेम्मा के बारे में सोचते हैं , तो यह अनिवार्य रूप से क्या कहता है, यह है कि किसी भी नियमित भाषा को तीन टुकड़ों में विभाजित किया जा सकता है, x , y और z , जहाँ भाषा के सभी उदाहरण xy * z में हैं। (जहां * क्लेन पुनरावृत्ति है, अर्थात, y की 0 या अधिक प्रतियां ।) आपके पास मूल रूप से एक "गैर-विषयक" है जिसे विस्तारित किया जा सकता है।

अब, संदर्भ-मुक्त भाषाओं के बारे में क्या? संदर्भ-मुक्त भाषाओं के लिए एक अनुरूप पम्पिंग लेम्मा है जो भाषा में तार को पांच भागों में तोड़ती है , uvxyz , और जहां भाषा के सभी उदाहरण uv i xy i z में हैं , i Now 0. के लिए, अब, आप दो "nonterminals "जब तक आपके पास समान संख्या हो , तब तक इसे दोहराया या पंप किया जा सकता है ।


10
एक संदर्भ संवेदनशील भाषा को पूर्ण ट्यूरिंग मशीन की आवश्यकता नहीं होती है। एक रैखिक बाउंड ऑटोमेटन पर्याप्त है। यह एक ट्यूरिंग मशीन है जिसका टेप परिमित होता है, आकार इनपुट स्ट्रिंग पर कुछ रैखिक फ़ंक्शन से घिरा होता है।
डेव क्लार्क

16

नियमित और संदर्भ मुक्त व्याकरण के बीच का अंतर: (एन, context , पी, एस): टर्मिनलों, गैर-विषयक, निर्माण, राज्य टर्मिनल प्रतीक शुरू करना

● औपचारिक व्याकरण द्वारा परिभाषित भाषा के प्रारंभिक प्रतीक

● एबीसी

नॉनटर्मिनल सिंबल (या सिंटैक्टिक चर)

● उत्पादन नियमों के अनुसार टर्मिनल प्रतीकों के समूहों द्वारा प्रतिस्थापित किया गया

● एबीसी

नियमित व्याकरण: सही या बाएँ नियमित व्याकरण सही नियमित व्याकरण, सभी नियम रूपों का पालन करते हैं

  1. B → जहां B, N में एक नॉनटर्मिनल है और Σ में एक टर्मिनल है
  2. B → aC जहां B और C N में हैं और B में है
  3. B → otes जहाँ B N में है और ε खाली स्ट्रिंग को दर्शाता है, अर्थात लंबाई 0 का स्ट्रिंग

नियमित व्याकरण छोड़ दिया, सभी नियम रूपों का पालन करते हैं

  1. A → A जहां N में एक गैर-समरूप है और Σ में एक टर्मिनल है
  2. A → Ba जहां A और B N में हैं और Σ में है
  3. A → the जहां A N में है और ε खाली स्ट्रिंग है

संदर्भ मुक्त व्याकरण (सीएफजी)

Of औपचारिक व्याकरण जिसमें प्रत्येक उत्पादन नियम V → w का होता है

○ V एकल nonterminal प्रतीक है

○ w टर्मिनलों की एक स्ट्रिंग है और / या nonterminals (w खाली हो सकता है)


5

नियमित व्याकरण: - निम्नानुसार उत्पादन युक्त व्याकरण RG है:

V->TV or VT
V->T

जहां V = चर और टी = टर्मिनल

RG लेफ्ट लाइनर ग्रामर या राइट लाइनर ग्रामर हो सकता है, लेकिन मिडिल लीनियर ग्रामर नहीं।

जैसा कि हम जानते हैं कि सभी RG रैखिक व्याकरण हैं लेकिन केवल Left Linear या Right रैखिक व्याकरण RG हैं।

एक नियमित व्याकरण अस्पष्ट हो सकता है।

S->aA|aB
A->a
B->a

अस्पष्ट ग्रामर: - एक स्ट्रिंग x के लिए उनके एक से अधिक LMD या RMD या एक से अधिक पार्स ट्री या एक LMD और एक RMD से अधिक मौजूद होते हैं, लेकिन दोनों अलग-अलग पार्स ट्री का निर्माण करते हैं।

                S                   S

              /   \               /   \
             a     A             a     B
                    \                   \
                     a                   a

यह व्याकरण अस्पष्ट व्याकरण है क्योंकि दो पार्स वृक्ष है।

सीएफजी: - एक व्याकरण ने कहा कि यदि उसका उत्पादन रूप में है तो सीएफजी होगा:

   V->@   where @ belongs to (V+T)*

DCFL: - जैसा कि हम जानते हैं कि सभी DCFL LL (1) ग्रामर हैं और सभी LL (1) LR (1) हैं, इसलिए यह कभी अस्पष्ट नहीं होगा। इसलिए DCFG कभी भी अस्पष्ट नहीं होगा।

हम यह भी जानते हैं कि सभी आरएल डीसीएफएल हैं इसलिए आरएल कभी अस्पष्ट नहीं होते हैं। ध्यान दें कि आरजी अस्पष्ट हो सकता है लेकिन आरएल नहीं।

सीएफएल: सीएफएल मई या अस्पष्ट नहीं हो सकता है।

नोट: RL कभी भी अस्पष्ट रूप से अस्पष्ट नहीं होना चाहिए।


4

नियमित अभिव्यक्ति

  • लेक्सिकल विश्लेषण का आधार
  • नियमित भाषाओं का प्रतिनिधित्व करते हैं

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

  • पार्सिंग का आधार
  • प्रतिनिधि भाषा निर्माण करता है

यहां छवि विवरण दर्ज करें


नहीं, यह संक्षिप्त विवरण है, कृपया फिर से पढ़ें और छवि जांचें।
अहमद सलेम

3

एक व्याकरण संदर्भ-मुक्त है यदि सभी उत्पादन नियमों का रूप है: A (अर्थात, एक नियम के बाईं ओर केवल एक ही चर हो सकता है; दाईं ओर अप्रतिबंधित है और टर्मिनलों और चर का कोई भी अनुक्रम हो सकता है)। हम एक व्याकरण को 4-टुपल के रूप में परिभाषित कर सकते हैं जहां V एक परिमित सेट (चर) है, _ एक परिमित सेट (टर्मिनल) है, S एक आरंभिक चर है, और R एक परिमित नियम है, जिसमें से प्रत्येक एक मानचित्रण है V
नियमित व्याकरण या तो दाएं या बाएं रैखिक है, जबकि संदर्भ मुक्त व्याकरण मूल रूप से टर्मिनलों और गैर-टर्मिनलों का कोई संयोजन है। इसलिए हम कह सकते हैं कि नियमित व्याकरण संदर्भ-मुक्त व्याकरण का एक सबसेट है। इन गुणों के बाद हम कह सकते हैं कि संदर्भ मुक्त भाषाएँ सेट में नियमित भाषा सेट भी शामिल हैं


-1

मूल रूप से नियमित व्याकरण संदर्भ मुक्त व्याकरण का एक सबसेट है, लेकिन हम यह नहीं कह सकते कि प्रत्येक संदर्भ मुक्त व्याकरण एक नियमित व्याकरण है। मुख्य रूप से संदर्भ मुक्त व्याकरण अस्पष्ट है और नियमित व्याकरण अस्पष्ट हो सकता है।


-4

एक नियमित ग्रामर कभी अस्पष्ट नहीं होता क्योंकि यह या तो रैखिक या दाएं रैखिक होता है, इसलिए हम नियमित ग्रामर के लिए दो निर्णय वृक्ष नहीं लगा सकते हैं, इसलिए यह हमेशा अस्पष्ट होता है। लेकिन नियमित व्याकरण की तुलना में अन्य सभी नियमित हो सकते हैं या नियमित नहीं हो सकते हैं


4
@ दिनेश एक नियमित व्याकरण अस्पष्ट हो सकता है। याद रखें कि एक व्याकरण अस्पष्ट है यदि दो अलग-अलग वाक्यविन्यास पेड़ मौजूद हैं और एक वाक्यविन्यास वृक्ष लेबल है। इसलिए आइसोमोर्फिक पेड़ अलग पेड़ हैं। यानी एक सरल व्याकरण जैसे S -> A | ए बी, बी -> ए, ए -> अस्पष्ट है क्योंकि शब्द 'आ' के लिए दो वाक्यविन्यास के पेड़ मौजूद हैं जो कि आइसोमॉर्फिक हैं लेकिन अलग हैं।
काई कुचेनबेकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.