नियतात्मक संदर्भ-मुक्त और दृष्टिहीन पुशडाउन भाषाओं के लिए क्या अच्छी अधिसूचनाएँ मौजूद हैं?


10

नियतात्मक संदर्भ-मुक्त भाषाएँ (DCFL) और दृश्यमान पुशडाउन भाषाएँ (VPL) दोनों ही संदर्भ-मुक्त भाषाओं (CFL) और नियमित भाषाओं (REG) के बीच औपचारिक भाषाओं के समूह हैं। क्या पठनीय संकेतन है जो सादे ASCII में बैकस-नाउर-फॉर्म जैसे सीएफएल के लिए और रेगुलर एक्सप्रेशन रेग के लिए व्यक्त किया जा सकता है?


1
प्रश्न के शीर्षक में "अच्छा" का अर्थ स्पष्ट करना उपयोगी हो सकता है। DNFL का वर्णन करने के लिए DCFL का उपयोग करने में क्या गलत है?
Tsuyoshi Ito

1
अच्छे से मेरा मतलब है कि मनुष्य के लिए पढ़ना और लिखना आसान होना चाहिए, इसलिए यह एएससीआईआई पर आधारित होना चाहिए। बीएनएफ महान है - नियमित अभिव्यक्तियाँ बीएनएफ का एक संक्षिप्त उपसमुच्चय हैं। लेकिन बीएनएफ का कौन सा सबसेट DCFL को परिभाषित करता है और जो VPL को परिभाषित करता है?
जैकब

जवाबों:


5

DCFLs के बारे में, मुझे नियतात्मक पुशडाउन ऑटोमेटन के संक्रमण फ़ंक्शन से बेहतर अंकन नहीं दिखता है, अर्थात स्पष्ट रूप से नियम साथ , अवस्थाओं में , स्टैक के नियम लिखना। प्रतीक, स्टैक प्रतीकों का एक क्रम है, और इनपुट प्रतीक या खाली स्ट्रिंग है। संकेतन स्वयं नियतांक को लागू नहीं करता है, लेकिन यह आसानी से जांचा जाता है। संदर्भ-मुक्त व्याकरण प्रकार के संकेतन (बीएनएफ के रूप में) का उपयोग करते हुए, आप समस्याओं में चलाने जा रहे हैं, क्योंकि डीसीएफएल सीएफएल का एक उचित उपवर्ग हैं, और जैसा कि डेनियल ने नोट किया है, आप सामान्य रूप से सीएफएल को देखते हुए यह तय नहीं कर सकते कि क्या इसकी भाषा नियतात्मक है।क्ष , क्ष ' क्यू z γ एकq,z,aq,γq,qQzγa

VPLS के बारे में, CFGs के लिए एक कोष्ठक / कोष्ठक शैली अच्छा पर्याप्त होगा, प्रपत्र के नियमों के साथ जहां एक nonterminal, है एक फोन प्रतीक, की वापसी प्रतीक है, और एक के अनुक्रम नियमित मिश्रित आंतरिक प्रतीकों और nonterminals पर अभिव्यक्ति। चूंकि कोई भी VPL भी एक (D) CFL है, आप पुशडाउन ऑटोमेटा के लिए उपरोक्त नोटिफिकेशन का फिर से उपयोग कर सकते हैं और जांच सकते हैं कि स्टैक ऑपरेशंस कॉल और रिटर्न से मेल खाते हैं, या किसी नेस्टेड शब्द ऑटोमेटन के ट्रांजेक्शन रिलेशन को लिखते हैं (जो निरर्थक होगा) ।एक एक αAaαbAabα

संपादित करें: यह सोचने के लिए आओ, XML स्कीमा के लिए एक संकेतन, जैसे कि RelaxNG की कॉम्पैक्ट सिंटैक्स --- जो एक ASCII संकेतन --- है, आसानी से वीपीएल के लिए इस्तेमाल किया जा सकता है। तुम बस टैग के लिए कुछ नामकरण सम्मेलनों लागू करने के लिए, उदाहरण के लिए एक खुलने वाला टैग "<अब>" एक कॉल प्रतीक है जिसकी ज़रूरत मिलान एक बंद टैग "</ अब>" एक वापसी प्रतीक के लिए ।bab


धन्यवाद! DCFLs के बारे में मुझे लगता है कि यह एक सही दिशा है। एक ठोस सिंटैक्स में कुछ उप-संक्षिप्तीकरण होते हैं जो नियमित अभिव्यक्ति द्वारा पार्स किए गए सबसेट के लिए होते हैं। वीपीएल के बारे में मुझे अभी तक यकीन नहीं है, क्योंकि एक वीएलपी को एक्सएमएल जैसे ट्री मॉडल के विपरीत कॉलिंग और रिटर्न सिंबल की अनुमति है। आप बेहतर तुलना कर सकते हैं एक मनमाने ढंग से उप-अनुक्रम के साथ SAX- घटनाओं की एक मनमाना XML पेड़ से। मुझे संदेह है कि RelaxNG इसका वर्णन कर सकता है।
जैकब

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

@reinerpost: सच है, लेकिन (मेरे बचाव में) मैं एलआर (1) व्याकरण को एक सिंटैक्टिक नोटेशन प्रदान करने के लिए नहीं मानूंगा , क्योंकि एक को एलआर (1) की स्थिति की जांच करने की आवश्यकता है।
सिल्वेन

3

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

वैसे, यह ध्यान में नहीं आता है कि क्या कोई संदर्भ-रहित भाषा निर्धारक है (ग्रीबाच की प्रमेय)।

मुझे मानना ​​होगा कि मैंने कभी वीपीएल के बारे में नहीं सुना।


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

अनिश्चयता के मुद्दे के बारे में: एक भाषा एक सीएफएल है अगर वहाँ एक संदर्भ-मुक्त व्याकरण (सीएफजी) मौजूद है जो इसे उत्पन्न करता है। यदि आपको सीएफजी दिया जाता है, तो आप यह तय कर सकते हैं कि यह व्याकरण एलआर (के) है, इसलिए निर्धारक। (यही बात पुशडाउन ऑटोमेटा पर भी लागू होती है - यह जांचना आसान है कि क्या दिया गया पीडीए नियतात्मक है या नहीं।) हालांकि, मान लीजिए कि आपके पास सीएफजी है जो एलआर (के) नहीं है - इसका मतलब यह नहीं है कि भाषा डीसीएफएल नहीं है ; आप अभी इसके लिए LR (k) व्याकरण नहीं खोज सकते हैं।
DaniCL

"आप तय कर सकते हैं कि क्या यह व्याकरण तय कश्मीर के लिए LR (k) है"।
सिल्वैन

@ जाकोब: ग्रीबाच का प्रमेय यह नहीं बताता है, और अगर ऐसा किया भी, तो इसका मतलब केवल यही होगा कि मनमाने ढंग से CFG DCFGs के लिए एक उपयुक्त अंकन औपचारिकता नहीं हैं, जैसे कि वे नियमित भाषाओं के लिए एक अच्छा अंकन औपचारिकता नहीं हैं (चाहे सीएफजी का वर्णन एक नियमित भाषा के रूप में अच्छी तरह से अवांछनीय है)। हालांकि सीएफजी (जैसे नियमित भाषाओं के लिए नियमित व्याकरण) का उपवर्ग लेने के साथ कुछ भी गलत नहीं है।
रीइनस्टीरपोस्ट

यहाँ पाठ्यपुस्तकों में टेढ़ा शब्द बनाने की परंपरा है: वे इस तरह के बयान देते हैं जैसे कि "यह अनिर्णायक है कि क्या सीएफएल नियमित / नियतात्मक है" जब वे वास्तव में इसका मतलब यह है कि यह "यह अक्षम्य है कि क्या सीएफजी एक नियमित / निर्धारक का वर्णन करता है भाषा: हिन्दी"।
reinierpost
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.