"संदर्भ-मुक्त व्याकरण" में "संदर्भ" का क्या अर्थ है?


30

एक संदर्भ-मुक्त व्याकरण क्या है, इस बारे में ऑनलाइन बहुत सारी परिभाषाएँ हैं, लेकिन मुझे जो कुछ भी नहीं मिला वह मेरी प्राथमिक परेशानी को संतुष्ट करता है:

यह किस संदर्भ से मुक्त है?

जांच करने के लिए, मैंने "संदर्भ संवेदनशील व्याकरण" को गोगल किया, लेकिन मैं अभी भी यह खोजने में विफल रहा कि "संदर्भ" क्या था।

क्या कोई यह बता सकता है कि contextइन नामों में यह शब्द क्या है ?


5
मुझे विकिपीडिया स्पष्टीकरण बहुत अच्छा लगता है - "एक औपचारिक व्याकरण को" संदर्भ मुक्त "माना जाता है, जब इसके उत्पादन नियमों को एक गैर-विषयक के संदर्भ के बिना लागू किया जा सकता है। कोई बात नहीं जो प्रतीक इसे घेरते हैं, बाईं ओर एकल nonterminal हमेशा हो सकता है। दाहिने हाथ की ओर से प्रतिस्थापित किया जाए। " - इसे "प्लेन इंग्लिश" बनने के लिए रीफ्रेश और सरलीकृत किया जा सकता है, लेकिन इसका संकेत मुझे स्पष्ट लगता है।
जकफ

1
@jkff यह बहुत अच्छा है कि आपको स्पष्टीकरण अच्छा लगता है, लेकिन मैं अभी भी यह समझने में असफल नहीं हूँ कि "संदर्भ" का वास्तव में यहाँ क्या मतलब है। मुझे एक उदाहरण देखने की जरूरत है जहां संदर्भ है, और जहां कोई संदर्भ नहीं है। मेरे लिए, ऐसा लगता है कि मैंने जो भी व्याकरण देखा है, उसका संदर्भ है
कोडीबस्टीन

क्या यह परिभाषा से स्पष्ट नहीं है?
राफेल

2
विडंबना यह है कि उस संदर्भ से महत्वपूर्ण संदर्भ गायब था , इसलिए मैंने इसे समझाने के लिए एक वाक्य जोड़ा।
रीयरियरपोस्ट

2
उदाहरण: C ++ 11 में, overrideया तो एक चर नाम या एक कीवर्ड हो सकता है, यह इस बात पर निर्भर करता है कि इसका उपयोग कहां किया गया है (यानी, इसका संदर्भ)। यदि एक विधि घोषणा के बाद उपयोग किया जाता है, तो यह एक कीवर्ड है। अन्यथा यह नहीं है। यह एक संदर्भ संवेदनशील व्याकरण का एक उदाहरण है।
थॉमस ईडिंग

जवाबों:


37

आप सही हैं, हमेशा कुछ अर्थों में एक संदर्भ होता है। मुझे नहीं लगता कि आप किसी उत्पादन को समझे बिना "संदर्भ-मुक्त" में "संदर्भ" का क्या अर्थ समझ सकते हैं।

एक उत्पादन एक प्रतिस्थापन नियम है। यह कहता है कि, भाषा के भीतर तार उत्पन्न करने के लिए, आप बाईं ओर क्या है, इसके लिए दाईं ओर क्या है, इसका विकल्प चुन सकते हैं:

A -> xy

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

zA -> xy

इसका मतलब यह है कि वर्ण "z" के बाद अमूर्त अनुक्रम A को अक्षर "x" और "y" से बदला जा सकता है।

एक संदर्भ-मुक्त उत्पादन का सीधा मतलब है कि बाएं हाथ की तरफ केवल एक चीज है। पहला उदाहरण संदर्भ-मुक्त है, क्योंकि A को "x" और "y" द्वारा प्रतिस्थापित किया जा सकता है, इससे पहले या उसके बाद कोई फर्क नहीं पड़ता। हालांकि, दूसरे उदाहरण में, वर्ण "z" को A के सामने आना है, और फिर संयोजन को "x" और "y" से बदला जा सकता है, इसलिए इसमें कुछ संदर्भ शामिल हैं।

एक संदर्भ-मुक्त व्याकरण तो केवल संदर्भ-मुक्त प्रस्तुतियों वाला एक व्याकरण है।

दूसरा उदाहरण वास्तव में एक अप्रतिबंधित उत्पादन का उदाहरण है। एक और श्रेणी है जो संदर्भ-मुक्त और अप्रतिबंधित के बीच है जिसे "संदर्भ-संवेदनशील" कहा जाता है। संदर्भ-संवेदनशील उत्पादन का एक उदाहरण है:

zA -> zxy

अंतर यह है कि बाएं हाथ की तरफ ए (और बाद में) से पहले क्या आता है, उसे दाईं ओर संरक्षित किया जाना चाहिए। इसका प्रभावी रूप से मतलब है कि केवल ए को प्रतिस्थापित किया जाता है, लेकिन केवल उचित संदर्भ में प्रतिस्थापित किया जा सकता है।


2
धन्यवाद जो एक बड़ी मदद है! मैंने वास्तव में कभी भी व्याकरण का उदाहरण नहीं देखा है, बायीं ओर एक से अधिक चर के साथ जैसा आपने दिखाया। मुझे लगता है कि इसीलिए मैं यह नहीं देख पाया कि "संदर्भ" क्या था। धन्यवाद
CodyBugstein

4
शायद एक सरल संदर्भ उदाहरण होगा zA -> zxy: ए को अभी भी xy द्वारा प्रतिस्थापित किया गया है, लेकिन केवल z के बाद।
MSalters

अधिक विस्तार से, यह उत्तर एक अप्रतिबंधित व्याकरण के बारे में बात करता है , जबकि @MSalters बताते हैं कि संदर्भ संवेदनशील व्याकरण संदर्भ के अर्थ के बेहतर उदाहरण के लिए बनायेगा।

@ दलाल: आपके पास एक अच्छी बात है। मैंने अपना उत्तर संशोधित कर दिया। मेरे पास एक कठिन समय था जो उन विवरणों को मेरे विवरण में जोड़ने के तरीके के साथ आ रहा था, क्योंकि यह अधिक जटिल लग रहा था, इसलिए मैंने जो किया वह अंत में केवल अधिक विवरण जोड़ रहा था।
वॉन काटो

9

β
αδ

बीटा क्या है? यह एक टर्मिनल या एक चर है? और क्या आप "भावुक रूप" समझा सकते हैं? इसका मतलब यह है कि इसे आगे नहीं निकाला जा सकता है?
कोडीबस्टीन

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

3
@ मुझे आपको व्याकरण और संदर्भ-मुक्त व्याकरण की औपचारिक परिभाषाओं पर ध्यान देने की आवश्यकता है । औपचारिक वस्तुओं को समझने का कोई शॉर्टकट नहीं है ।
राफेल

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

मुझे लगा कि एक भावुक रूप में कोई भी चर नहीं हो सकता है - इसे केवल टर्मिनलों की आवश्यकता है ।
कोडीबगस्टीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.