मैं कुछ मजेदार ढंग से भाषा पार्सर्स के विकास की खोज में रहा हूं कि वे चॉम्स्की हायरार्की में कैसे फिट होते हैं।
संदर्भ-संवेदी व्याकरण का एक अच्छा वास्तविक-संसार (यानी सैद्धांतिक नहीं) उदाहरण क्या है?
मैं कुछ मजेदार ढंग से भाषा पार्सर्स के विकास की खोज में रहा हूं कि वे चॉम्स्की हायरार्की में कैसे फिट होते हैं।
संदर्भ-संवेदी व्याकरण का एक अच्छा वास्तविक-संसार (यानी सैद्धांतिक नहीं) उदाहरण क्या है?
जवाबों:
अच्छा प्रश्न। हालाँकि जैसा कि टिप्पणियों में उल्लेख किया गया है कि बहुत सी प्रोग्रामिंग भाषाएं संदर्भ-संवेदनशील हैं, संदर्भ-संवेदनशीलता अक्सर पार्सिंग चरण में हल नहीं होती है, लेकिन बाद के चरणों में - अर्थात, भाषा का एक सुपरसेट एक संदर्भ-मुक्त व्याकरण का उपयोग करके पार्स किया जाता है और उन पार्स के कुछ पेड़ों को बाद में छान लिया जाता है।
हालांकि, इसका मतलब यह नहीं है कि वे भाषाएं संदर्भ-संवेदनशील नहीं हैं , इसलिए यहां कुछ उदाहरण दिए गए हैं:
हास्केल आपको उन कार्यों को परिभाषित करने की अनुमति देता है जो ऑपरेटरों के रूप में उपयोग किए जाते हैं, और उन ऑपरेटरों की पूर्वता और सहक्रियाशीलता को भी परिभाषित करते हैं। दूसरे शब्दों में, आप ऑपरेटर अभिव्यक्ति के लिए सही पार्स ट्री का निर्माण नहीं कर सकते हैं जैसे:
a @@ b @@ c ## d ## e
जब तक आपने पहले से / के लिए पूर्ववर्ती घोषणा / सहानुभूति घोषणाओं को पार्स नहीं किया है @@
और ##
:
infixr 8 @@
infixr 6 ##
एक दूसरा उदाहरण बेनकोड है , एक डेटा भाषा जो अपनी लंबाई के साथ सामग्री को उपसर्ग करती है:
<length>:<contents>
इस प्रारूप के साथ मुद्दा यह है कि किसी भी संदर्भ-संवेदनशील के बिना पार्स करना बहुत असंभव है, क्योंकि "फ़ील्ड" आकारों का पता लगाने का एकमात्र तरीका है ... स्ट्रिंग को पार्स करना।
एक तीसरा उदाहरण एक्सएमएल है, यह मानते हुए कि मनमाने ढंग से टैग नामों की अनुमति है: टैग नाम खोलने के लिए करीब टैग मिलान होना चाहिए:
<hi>
<bye>
the closing tag has to match bye
</bye>
</hi> <!-- has to match "hi" -->
जब तक मुझे पता है, संदर्भ-संवेदनशील व्याकरण का उपयोग प्राकृतिक भाषा प्रसंस्करण में किया जाता है, केवल । प्रोग्रामिंग भाषाओं के व्याख्याकार और संकलनकर्ता जटिलता के कारण एक संदर्भ-मुक्त व्याकरण को पार्स करने की कोशिश नहीं करते हैं (भले ही अतीत में कुछ प्रयास किया गया हो)।
हो सकता है, आप इनमें से किसी एक पुस्तकालय में वास्तविक उपयोग के कुछ उदाहरण पा सकें:
http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits
कभी-कभी प्रोग्रामिंग भाषा के शब्दार्थों के विवरण में संदर्भ संवेदनशील व्याकरण का उपयोग किया जाता है। संदर्भ संवेदी व्याकरणों का शायद सबसे व्यापक उपयोग अल्गोल 68 भाषा की परिभाषा थी। यह दो स्तरीय संदर्भ मुक्त व्याकरण का उपयोग करता था (देखें http://en.wikipedia.org/wiki/Two-level_grammar ) Algol68 कार्यक्रमों के वाक्य विन्यास और शब्दार्थ दोनों का वर्णन करने के लिए।
मेरे सहकर्मियों के एक जोड़े ने वैन विजेंगार्डन व्याकरण का उपयोग अल्गोल 68 के उनके कार्यान्वयन को निर्देशित करने के लिए किया (देखें http://en.wikipedia.org/wiki/FLACC )।