IELR (1) -पारसर क्या है?


14

मैं खुद को बायसन का उपयोग सिखाने की कोशिश करता हूं। मैनपेज बाइसन (1) बायसन के बारे में कहता है:

एलआरआर (1), आईईएलआर (1), या कैनोनिकल एलआर (1) पार्सर टेबल को नियोजित करने वाले एक नियतकालिक एलआर या सामान्यीकृत एलआर (जीएलआर) पार्सर उत्पन्न करें।

IELR- पार्सर क्या है? विश्व व्यापी वेब पर मुझे मिले सभी प्रासंगिक लेखों का भुगतान कर दिया गया है।



@reinierpost मुझे अभी बहुत बेवकूफ लग रहा है। मुझे यह क्यों नहीं मिला?
फ़ूजएक्सएक्सएल

मुझे नहीं पता - Google परिणामों को वैयक्तिकृत करता है ...
reinierpost

@reinierpost, क्या आप अपने लिंक को उद्धृत करके इस प्रश्न का उत्तर देना चाहेंगे, ताकि इस प्रश्न को साफ़ किया जा सके ?
मेर

हममम ... अगर यह सब लेता है, ठीक है।
रीइनियरियरपोस्ट

जवाबों:


3

आईईएलआर (1) पार्सिंग एल्गोरिथम

IELR (1) पार्स कलन विधि योएल ई डेनी द्वारा 2008 में विकसित किया गया था अपनी पीएचडी के भाग के रूप क्लेम्सन विश्वविद्यालय में ब्रायन ए। मलॉय की देखरेख में शोध। आईईएलआर (1) एल्गोरिथ्म 1977 में डेविड पेजर द्वारा विकसित तथाकथित "न्यूनतम" एलआर (1) एल्गोरिथ्म का एक रूपांतर है, जो खुद 1965 में डोनाल्ड नुथ द्वारा आविष्कार किए गए एलआर (के) पार्सिंग एल्गोरिथ्म की विविधता है । आईईएलआर में आईई (1) अपर्याप्त उन्मूलन के लिए खड़ा है (अंतिम खंड देखें)।

LR (1) एल्गोरिदम

IELR (1) का एलआर (1) भाग एल ईफ्ट से राइट, आर ऑइटेस्ट से 1 लुकहैड टोकन के साथ आता है। LR (1) पार्सर्स को कैनोनिकल पार्सर भी कहा जाता है। पार्सिंग एल्गोरिदम का यह वर्ग एक स्टैक और स्टेट ट्रांजिशन टेबल के साथ बॉटम-अप, शिफ्ट-कम पार्सिंग रणनीति को नियुक्त करता है, जो पार्सिंग के दौरान लेने के लिए अगली कार्रवाई निर्धारित करता है।

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

पेजर के एल्गोरिदम की सीमाएं

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

डेनी और माललॉय बताते हैं कि यह सीमा केवल अकादमिक नहीं है कि गौक और गपिक दोनों का व्यापक रूप से उपयोग किया जाता है, परिपक्व सॉफ्टवेयर, गलत पार्सर क्रिया करते हैं।

आईईएलआर (1) का सुधार

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


6

एक लेख जो इसे पेश करने का दावा करता है: आईईएलआर (1): प्रैक्टिकल एलआर (1) नॉन-एलआर के लिए पार्सर टेबल्स (1) जोएल ई। डेनी और ब्रायन ए मलॉय, क्लेम्सन विश्वविद्यालय द्वारा संघर्ष संकल्प के साथ व्याकरण । , Malloy की साइट से आसानी से उपलब्ध है।

क्या वे लायक हैं कुछ मैं जवाब नहीं दे सकता है। (व्यक्तिगत रूप से मुझे ऐसे अपंग CFG पार्सिंग की आवश्यकता समझ में नहीं आती है - जब आप सिर्फ GLR का उपयोग कर सकते हैं तो अपनी अभिव्यंजक शक्ति को सीमित क्यों करें ? मुझे क्या मतलब है TAG या PEG की तरह कुछ है (वे स्वाभाविक लगते हैं और अभिव्यंजक शक्ति या पेड़ जोड़ते हैं? व्याकरण (एक्सएमएल जैसी भाषाओं के लिए, जिसमें पार्स पेड़ों को पहचानना डिजाइन द्वारा अप्रमाणिक है।)


जबकि मैं प्रौद्योगिकी के संबंध में सिद्धांत पर सहमत हूं, समस्या अक्सर यह है कि पारंपरिक नियतात्मक पार्सिंग में बेहतर, अधिक पूर्ण कार्यान्वयन हैं। एक और मुद्दा यह है कि जनरल सीएफ पार्सिंग अधिक शक्तिशाली है, लेकिन जीएलआर इसका सबसे अच्छा संस्करण नहीं हो सकता है।
बबौ

4
लोगों ने सीएफजी पार्सर्स के शौक को विकसित करने का मुख्य कारण यह है कि एक जीएलआर पार्सर जरूरी नहीं कि रैखिक समय में चलता है-यह कई अनुप्रयोगों के लिए एक बड़ी समस्या है। एक आईईएलआर पार्सर रैखिक रनटाइम और अधिक की गारंटी दे सकता है।
फ़ूजएक्सएक्सएल

मुझे समझ नहीं आता कि यह समस्या क्यों होगी।
रीइनियरियरपोस्ट

2
@reinierpost यह रैखिक समय बनाम सबसे खराब स्थिति है-हे(n4) (जीएलआर) या हे(n3)(GLL)। बड़े स्रोत फ़ाइलों को संकलित करने के लिए, यह बहुत समय जोड़ सकता है । इसके अलावा, समर्थन के बिना बाधा पर प्राथमिकता व्यक्त करने का रवैया शामिल समय बलिदान की उपेक्षा करता है। तकनीकी रूप से हम सुपर-एक्सप्रेसिव sLMG और / या PMCFG औपचारिकता का उपयोग कर सकते हैं, लेकिन तब हम इसके लिए काम कर रहे होंगेएलमैंएक्सहे(nएक्स)। यह एक बेतुका उदाहरण हो सकता है, लेकिन प्रेरणा हमेशा समय है । मनुष्य हमेशा के लिए नहीं रहता और उसके पास करने के लिए बहुत कुछ है। उनका समय बर्बाद करना आम तौर पर बुरा है।
उपयोगकर्ता

3
मैं यह नोट करना चाहूंगा कि "व्यक्तिगत रूप से मुझे इस तरह के अपंग CFG पार्सिंग की आवश्यकता समझ में नहीं आती है - जब आप सिर्फ GLR का उपयोग कर सकते हैं तो अपनी अभिव्यंजक शक्ति को सीमित क्यों करें?" बल्कि इस संदर्भ में गुमराह किया गया है। IELR (1) का उपयोग अधिक कुशल LR (1) पार्सर टेबल उत्पन्न करने के लिए किया जाता है, जो अधिक कुशल GLR पार्सर के लिए अनुमति देता है
orlp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.