क्या कोई संदर्भ-संवेदी व्याकरण का सरल लेकिन गैर-खिलौना उदाहरण दे सकता है?


12

मैं संदर्भ-संवेदनशील व्याकरण समझने की कोशिश कर रहा हूँ।

मैं समझता हूं कि भाषाएं क्यों पसंद करती हैं

  1. {ww|w*}
  2. {nnसीn|nएन}

संदर्भ मुक्त नहीं हैं, लेकिन क्या मैं जानना चाहूंगा कि अगर लावारिस लैम्ब्डा कैलकुलस के समान भाषा संदर्भ संवेदनशील है।

मैं एक साधारण, लेकिन गैर-खिलौना का उदाहरण देखना चाहता हूं (मैं ऊपर दिए गए खिलौने के उदाहरणों पर विचार करता हूं), एक संदर्भ-संवेदनशील व्याकरण का उदाहरण जो कुछ उत्पादन नियम के लिए, उदाहरण के लिए, यह बता सकता है कि प्रतीकों के कुछ तार हैं या नहीं वर्तमान में स्कोप है (जैसे किसी फंक्शन की बॉडी का निर्माण करते समय)।

क्या संवेदी संवेदनशील व्याकरण पर्याप्त नहीं हैं जो अनिर्धारित / अघोषित / अनबाउंड चर को वाक्य-विन्यास (शब्दार्थ के बजाय) त्रुटि बनाते हैं?


1
लगभग सभी वास्तविक प्रोग्रामिंग भाषाएं संदर्भ-संवेदनशील हैं (सामान्य अर्थ में, यानी "संदर्भ-संवेदनशील" के तहत दोनों चॉम्स्की टाइप -० और टाइप-आई व्याकरणों का संगम)। उदाहरण के लिए उपयोग किए जाने से पहले घोषित किए गए चर, पहचानकर्ता अद्वितीय होने चाहिए, इन सभी के लिए संदर्भ की आवश्यकता होती है (शब्दार्थ संदर्भ के रूप में संदर्भित, लेकिन भ्रामक हो सकते हैं) cs.purdue.edu/homes/hosking/502/notes/04-ememantics.pdf
निकोस एम ।

खैर, "संदर्भ-संवेदनशील" टाइप -1 व्याकरण के लिए मानक शब्द है।
रीयरियरपोस्ट

जवाबों:


8

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

(१) गैर-खिलौना उदाहरण क्या होगा? यह चर की घोषणा को प्रतिबिंबित करना चाहिए। वास्तविक प्रोग्रामिंग से अलग ऐसी भाषा का मेरा प्रस्ताव कुछ इस तरह होगा। वर्णमाला । वह भाषा संदर्भ-संवेदनशील है।{ w 1 ; डब्ल्यू 2 ; ; डब्ल्यू एन ( एक्स 1 ; एक्स 2 ; ... ; एक्स मीटर ) | डब्ल्यू मैं , एक्स जे{ एक , } * ,  प्रत्येक  एक्स जे  बराबर कुछ करने के लिए है  डब्ल्यू मैं }{,,;,(,)}

{w1;w2;...;wn(एक्स1;एक्स2;...;एक्स)|wमैं,एक्सजे{,}*, से प्रत्येक एक्सजे कुछ के बराबर है wमैं}

(२) वास्तव में इसे संदर्भ-संवेदनशील दिखाने के लिए मैं एक और औपचारिकता का उपयोग करूँगा। इसके टेप के रैखिक उपयोग के साथ एक ट्यूरिंग मशीन: एक रैखिक बाउंड ऑटोमैटोन एलबीए। मैं इसे पैटर्न मिलान करने के लिए प्रोग्राम कर सकता हूं / मैं लगातार प्रत्येक पर विचार और इसे उचित , पत्र द्वारा पत्र के साथ मिलान करने का प्रयास । LBA संदर्भ-संवेदनशील व्याकरण के समकक्ष हैं, लेकिन कार्यक्रम के लिए बहुत आसान है।डब्ल्यू जेएक्सजेwजे


इस पोस्ट के लिए धन्यवाद। मैं अब तक LBA से कम परिचित हूं, इसलिए मैं बिंदु (2) से कम आश्वस्त हूं। बिंदु (1) के रूप में, मैं यह देखने की कोशिश कर रहा हूं कि ऐसे नियम कैसे बनाए जाएंगे जो उत्पादन करेंगे, जहां एक चर नाम एक अभिव्यक्ति के रूप में अपेक्षित है, वर्तमान दायरे में केवल एक चर। मुझे एक संपूर्ण, औपचारिक CSG देखने की आवश्यकता नहीं है, लेकिन सिर्फ एक अनौपचारिक स्पष्टीकरण काम करेगा। मैं कल्पना नहीं कर सकता कि यह बहु-प्रतीक चर नामों के साथ कैसे किया जा सकता है, जो कि एक ~ अंग्रेजी वाक्य व्युत्पत्ति में विषय-क्रिया संख्या समझौते को प्रत्यक्ष करने के लिए एकल गैर-टर्मिनल संदर्भ का उपयोग करके, उदाहरण की तुलना में संदर्भ का एक अलग उपयोग है।

दूसरी ओर, मैं एक औपचारिक भाषा पृष्ठभूमि से हूं (और अंग्रेजी के मूल वक्ता भी नहीं) और मुझे यह समझने में परेशानी हो रही है कि आप वास्तव में क्या मॉडल / प्रतिनिधित्व करना चाहते हैं। माफ़ करना! मेरी दृष्टि में, इस संदर्भ में, (? चर नाम) NPY केवल एक खिलौना उदाहरण है, लेकिन आप क्या हासिल करना चाहते का एक हिस्सा है, वही स्ट्रिंग की पूर्ण प्रति होने है{ww|w...}
हेंड्रिक जनवरी

उत्तर के लिए धन्यवाद!। एक खिलौना उदाहरण है, और मैं समझता हूं कि यह संदर्भ-मुक्त क्यों नहीं है, लेकिन मैं अभी भी सहज रूप से "नहीं" देख रहा हूं कि यह कैसे संदर्भ-संवेदनशील है, या एक सीएसजी इसे कैसे उत्पन्न करेगा। मुझे स्पष्ट करने की कोशिश करें कि मुझे क्या समझ नहीं आ रहा है (कम से कम एक फॉलोअप सवाल है, लेकिन यह अब के लिए पर्याप्त है): एक सीएसजी एक संदर्भ का उपयोग कैसे कर सकता है बहु-प्रतीक शब्दों में से एक शब्द को फिर से एक निश्चित रूप से उत्पन्न करने के लिए उत्पादन? मैंने जो देखा है, उसमें से CSG आम तौर पर उत्पादन के दौरान पात्रों की अदला-बदली और एकल प्रतीकों का उपयोग करके उत्पादन करने के लिए काम करते हैं, लेकिन बहु-प्रतीक शब्द नहीं।
{ww|w}

3
ओह। यह एक ठोस सवाल है। लिए व्याकरण दिए बिना मैं कुछ बातें कह सकता हूं। व्याकरण के दो "सीमा-चिह्न" हैं जो कहते हैं । व्युत्पत्ति के दौरान स्ट्रिंग की तरह । एक पत्र उत्पन्न करता है एक प्रति के साथ एक साथ वर्णमाला से कि में पत्र "चाल" होगा प्रस्तुतियों द्वारा (तकनीकी रूप से एक है कि एक लय व्याकरण, सीएस के समकक्ष)। जब "दूत" R तक पहुँचता है तो वह M की R R a अक्षर की अपनी प्रति लिखता है{ww}एलआरएलwआरwएलwआरआरआर। अब (मल्टीसमबोल) स्ट्रिंग्स को कॉपी किया जा सकता है।
हेंड्रिक जनवरी

13

संदर्भ-संवेदनशील भाषा (CSL) का मेरा पसंदीदा उदाहरण SAT हैLandweber-कुरोदा प्रमेय का कहना है कि सीएसएल = NSpace । किसी भी SAT उदाहरण में रैखिक आकार का प्रमाणपत्र होता है, इसलिए SAT एक CSL है। मेरा प्रश्न देखें SAT के लिए संदर्भ-संवेदनशील व्याकरण? संदर्भ और चर्चा के लिए।[n]

कई अन्य एनपी-हार्ड भाषाएँ भी CSL में उसी कारण से हैं, जैसे कि CLIQUE।

CSL में काफी स्वाभाविक भाषाएँ भी हैं जो और भी कठिन हैं।

हालाँकि, मैं अपने पत्र के प्रमेय 3 में Landweber के निर्माण का उपयोग करने के अलावा एक संदर्भ-संवेदनशील व्याकरण (CSG) के रूप में एक मनमाना CSL व्यक्त करने के किसी भी तरीके से अवगत नहीं हूं। इस निर्माण में, CSG रैखिक-बाउंडेड ऑटोमेटन के संचालन के रिवर्स का वर्णन करता है जो CSL को पहचानता है। सीएसजी के प्रोडक्शंस बताते हैं कि मशीन की एक विशेष स्थिति एक संभावित चाल से कैसे परिणाम देती है। इस तरह का CSG ऑटोमेटन का एक व्याकरण में सीधा अनुवाद है, इसलिए यह जरूरी नहीं है कि भाषा की विशेषताओं के अनुरूप हो, जैसे कि चर घोषित करने में सक्षम हो, लेकिन इसके बजाय ऑटोमेटन के विवरणों से टकरा जाएंगे।

यदि आप CSL के बजाय CSG पर जोर देते हैं, और यदि आपका वास्तविक प्रश्न विशेष रूप से CSG को एक ऐसी भाषा के लिए देखना चाहता है, जिसमें प्रतिबंधित स्कोपिंग शामिल है, तो Hendrik Jan का उत्तर एक अच्छी शुरुआत लगती है।


9

हां, संदर्भ-संवेदनशील व्याकरण (CSG) अनिर्धारित / अघोषित / अनबाउंड वैरिएबल चेक बनाने के लिए पर्याप्त शक्तिशाली हैं, लेकिन दुर्भाग्य से हम CSG के तार पार्स करने के लिए कोई कुशल एल्गोरिथम नहीं जानते हैं।

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

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

इसके अलावा संदर्भ-संवेदनशील व्याकरण का उपयोग प्राकृतिक-भाषा प्रसंस्करण (एनएलपी) में किया जाता है। और अधिकांश प्राकृतिक भाषाएँ संदर्भ-संवेदनशील भाषाओं के उदाहरण हैं। (मैं संस्कृत भाषा के लिए निश्चित नहीं हूं )।

मैं इसे एक मूर्खतापूर्ण लेकिन सरल उदाहरण के साथ समझाने की कोशिश करूंगा (यह सिर्फ एक विचार है, आप इसे परिष्कृत कर सकते हैं):

NOUN     -->  { BlueBomber, Grijesh, I, We}
TENSE    -->  { am, was, is, were}
VERB     -->  { going, eating, working}

SENTENCE --> <NOUN> <TENSE> <VERB>

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

SENTENCE --> <NOUN>   <TENSE>   <VERB>
             Grijesh    is       working       [Correct statement]

परंतु

             Grijesh    am       working       [wrong statement]

कारण: <TENSE> का मूल्य मूल्य पर निर्भर करता है <NOUN> (उदाहरण के लिए I &lt;TENNSE> --> I am) और इसलिए व्याकरण अंग्रेजी भाषा में सही कथन उत्पन्न नहीं करता है।

वास्तव में हम पूर्ण अंग्रेजी के लिए एक संदर्भ-मुक्त व्याकरण नहीं लिख सकते हैं!

आपने देखा होगा, कोई भी प्राकृतिक भाषा अनुवादक या व्याकरण परीक्षक सही ढंग से काम नहीं करता है (लंबे वक्तव्यों के साथ प्रयास करें)। क्योंकि यह समस्या प्रसंग-संवेदी पार्सिंग एल्गोरिथम के अंतर्गत आती है।


संदर्भ : आप डॉ। अरुण कुमार के व्याख्यान देख सकते हैं । कुछ व्याख्यान में वह बताता है कि आप किस चीज में रुचि रखते हैं।


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

1
@BlueBomber: धन्यवाद मैं आपको जवाब दूंगा, भारत में इसकी रात..N नया साल मुबारक हो! :)
बृजेश चौहान

ऐसा लगता है कि मैं केवल यही कर सकता हूं कि सीमित संख्या में, और (इस) के अनुसार [ meta.scicomp.stackexchange.com/questions/156/… , मुझे इस प्रश्न को हटा देना चाहिए और इसे अधिक उपयुक्त स्थान पर रीपोस्ट करना चाहिए ...

@BlueBomber मैंने शिफ्ट करने के लिए झंडी दिखा दी है, आप भी कर सकते हैं।
बृजेश चौहान

1

(जवाब में टिप्पणियों का विस्तार)

यकीन नहीं है कि यह एक उदाहरण है जिसे आप पसंद करेंगे।

लगभग सभी वास्तविक प्रोग्रामिंग भाषाओं संदर्भ के प्रति संवेदनशील (सामान्य अर्थ में कर रहे हैं, यानी conflating दोनों चोमस्की प्रकार -0 और प्रकार मैं grammars "संदर्भ के प्रति संवेदनशील" है, जो निश्चित रूप से सच है के बाद से नीचे अप्रतिबंधित व्याकरण हैं और भी अधिक संदर्भ के प्रति संवेदनशील से संदर्भ -संवेदी व्याकरण)।

उदाहरण के लिए, "उपयोग किए जाने से पहले घोषित चर की आवश्यकता होती है", "पहचानकर्ता अद्वितीय होना चाहिए", इन सभी को संदर्भ की आवश्यकता होती है (कभी-कभी अर्थ संबंधी संदर्भ के रूप में संदर्भित किया जाता है, लेकिन यह भ्रामक हो सकता है, क्योंकि इसमें वाक्यात्मक विशेषताएं शामिल हैं) उदाहरण के लिए देखें https: // www .cs.purdue.edu / घरों / Hosking / 502 / नोट / 04-semantics.pdf

यह भावना कि उपरोक्त उदाहरण संदर्भ-संवेदी हैं (व्याकरण / वाक्य-बोध के साथ-साथ शब्दार्थ एक) में है क्योंकि वे अपने संदर्भ के बारे में बात करते हैं (जो पहले होता है या उसके बाद आता है)।

एक "वैरिएबल पहले से परिभाषित", संदर्भ पूर्ववर्ती के बारे में है , एक चर उपयोग। एक "विशिष्ट पहचानकर्ता", एक पहचानकर्ता घोषणा के बाद क्या हुआ या आता है , और इसी तरह दोनों संदर्भ हैं

यह भी देखें कि क्या जावास्क्रिप्ट एक मुक्त भाषा है? इतने पर


"संदर्भ-संवेदनशील" का अर्थ है टाइप -1।
१०:१० पर रीयरियरपोस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.