टॉप-डाउन पार्सिंग

कंप्यूटर विज्ञान में टॉप-डाउन पदच्छेद एक पार्सिंग रणनीति है जहां एक पहले पार्स पेड़ के उच्चतम स्तर को देखता है और एक औपचारिक व्याकरण के पुनर्लेखन नियमों का उपयोग करके पार्स ट्री को नीचे काम करता है। एलएल पार्सर एक प्रकार का पार्सर है जो टॉप-डाउन पार्सिंग रणनीति का उपयोग करता है।

टॉप-डाउन पार्सिंग सामान्य पार्स ट्री संरचनाओं की परिकल्पना करके अज्ञात डेटा संबंधों का विश्लेषण करने की एक रणनीति है और फिर यह विचार करना कि ज्ञात मूलभूत संरचनाएं परिकल्पना के अनुकूल हैं या नहीं। यह प्राकृतिक भाषाओं और कंप्यूटर भाषाओं दोनों के विश्लेषण में होता है।

टॉप-डाउन पार्सिंग को संदर्भ-मुक्त व्याकरण # डेरिवेशन और सिंटैक्स ट्री खोजने के प्रयास के रूप में देखा जा सकता है | पार्स ट्री की खोज करके इनपुट-स्ट्रीम के सबसे बाएं डेरिवेशन | दिए गए औपचारिक के टॉप-डाउन विस्तार का उपयोग करके पार्स-ट्री व्याकरण के नियम। व्याकरण के नियमों के सभी वैकल्पिक दाएं-पक्षों का विस्तार करके वाक्यात्मक अस्पष्टता को समायोजित करने के लिए समावेशी विकल्प का उपयोग किया जाता है। टॉप-डाउन पार्सिंग के सरल कार्यान्वयन बाएं रिकर्सन के लिए समाप्त नहीं होते हैं। लेफ्ट-रिकर्सिव व्याकरण, और बैकट्रैकिंग के साथ टॉप-डाउन पार्सिंग में अस्पष्ट संदर्भ-मुक्त व्याकरण के लिए इनपुट की लंबाई के संबंध में घातीय समय जटिलता हो सकती है। हालाँकि, अधिक परिष्कृत टॉप-डाउन पार्सर फ्रॉस्ट, हाफिज और कैलाघन द्वारा बनाए गए हैं, जो समय जटिलता # बहुपद समय में टॉप-डाउन पार्सिंग में #Accommodating बाएं रिकर्सन करते हैं और जो पार्स पेड़ की संभावित घातीय संख्या के बहुपद आकार के प्रतिनिधित्व उत्पन्न करते हैं।

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

उदाहरण के लिए:

जो स्ट्रिंग ए = एसीडीएफ उत्पन्न करता है
 * $$A \rightarrow aBC$$
 * $$B \rightarrow c \mid cd$$
 * $$C \rightarrow df \mid eg$$

मेल खाएगा $$A \rightarrow aBC$$ और मिलान करने का प्रयास करें $$B \rightarrow c \mid cd$$ अगला। तब $$C \rightarrow df \mid eg$$ कोशिश की जाएगी। जैसा कि कोई उम्मीद कर सकता है, कुछ भाषाएँ दूसरों की तुलना में अधिक अस्पष्ट हैं। एक गैर-संदिग्ध भाषा के लिए, जिसमें एक गैर-टर्मिनल के लिए सभी निर्माण अलग-अलग तार उत्पन्न करते हैं, एक उत्पादन द्वारा उत्पादित स्ट्रिंग उसी प्रतीक के साथ शुरू नहीं होगी, जो किसी अन्य उत्पादन द्वारा निर्मित स्ट्रिंग है। एक गैर-संदिग्ध भाषा को एलएल (1) व्याकरण द्वारा पार्स किया जा सकता है जहां (1) पार्सर एक समय में एक टोकन को आगे पढ़ता है। एलएल पार्सर द्वारा एक अस्पष्ट भाषा को पार्स करने के लिए, पार्सर को 1 से अधिक प्रतीकों को देखना चाहिए, उदा। डालूँगा (3).

इस समस्या का सामान्य समाधान एक एलआर पार्सर का उपयोग करना है, जो एक प्रकार का शिफ्ट-कम पार्सर है, और नीचे-ऊपर पार्सिंग करता है।

टॉप-डाउन पार्सिंग
में बाएं रिकर्सन को समायोजित करना एक औपचारिक व्याकरण जिसमें बायाँ पुनरावर्तन होता है, एक भोले-भाले पुनरावर्ती वंश पार्सर द्वारा पार्स नहीं किया जा सकता है जब तक कि वे एक कमजोर समतुल्य दाएं-पुनरावर्ती रूप में परिवर्तित नहीं हो जाते। हालांकि, हाल के शोध से पता चलता है कि कटौती के उपयोग से अधिक परिष्कृत टॉप-डाउन पार्सर में बाएं-पुनरावर्ती व्याकरण (सामान्य संदर्भ-मुक्त व्याकरण के अन्य सभी रूपों के साथ) को समायोजित करना संभव है। एक पहचानकर्ता एल्गोरिदम जो अस्पष्ट व्याकरण को समायोजित करता है और इनपुट लंबाई और वर्तमान इनपुट स्थिति के संबंध में गहराई प्रतिबंध लगाकर एक सतत-बढ़ते प्रत्यक्ष बाएं-पुनरावर्ती पार्स को कम करता है, 2006 में फ्रॉस्ट और हाफ़िज़ द्वारा वर्णित किया गया है। उस एल्गोरिदम को अप्रत्यक्ष (वर्तमान संदर्भ के साथ पहले गणना किए गए संदर्भ की तुलना करके) के साथ-साथ बहुपद समय में प्रत्यक्ष बाएं-रिकर्सन को समायोजित करने के लिए एक पूर्ण पार्सिंग एल्गोरिदम तक बढ़ाया गया था, और पार्स पेड़ की संभावित घातीय संख्या के कॉम्पैक्ट बहुपद-आकार के प्रतिनिधित्व उत्पन्न करने के लिए 2007 में फ़्रॉस्ट, हाफ़िज़ और कैलाघन द्वारा अत्यधिक अस्पष्ट व्याकरण। एल्गोरिथम तब से हास्केल (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा में लिखे गए पार्सर कॉम्बिनेटर के एक सेट के रूप में लागू किया गया है। कॉम्बिनेटर के इन नए सेट के कार्यान्वयन का विवरण एक पेपर में पाया जा सकता है लेखकों द्वारा, जिसे PADL'08 में प्रस्तुत किया गया था। X-SAIGA साइट में एल्गोरिदम और कार्यान्वयन विवरण के बारे में अधिक जानकारी है।

इसके अतिरिक्त, ऊपर उल्लिखित कटौती के अलावा एक ग्राफ़-संरचित स्टैक (GSS) का उपयोग किया जा सकता है ताकि आम उपसर्गों के साथ 'मर्जिंग' स्टैक द्वारा बाएं रिकर्सन को समायोजित किया जा सके और अनंत रिकर्सन को रोका जा सके, जिससे प्रत्येक स्टैक की संख्या और सामग्री को कम किया जा सके, जिससे पार्सर के समय और स्थान की जटिलता को कम करना। यह एक एल्गोरिथ्म की ओर जाता है जिसे सामान्यीकृत एलएल पार्सिंग के रूप में जाना जाता है, जिसमें आप एक दिए गए संदर्भ-मुक्त व्याकरण के सापेक्ष इनपुट स्ट्रिंग्स को पार्स करने के लिए एक जीएसएस, बाएं-रिकर्सन कर्टेलमेंट और एक एलएल (के) पार्सर का उपयोग करते हैं।

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

मुख्य विचार पार्सर लगाने के परिणामों को संग्रहित करना है  स्थिति पर   एक यादगार और पुन: उपयोग करने के लिए परिणाम जब भी वही स्थिति उत्पन्न होती है। फ्रॉस्ट, हाफिज और कैलाघन  बहुपद समय में सीएफजी के किसी भी रूप को समायोजित करने के लिए निरर्थक संगणनाओं से बचने के लिए memoization का उपयोग करें4) बाएं-पुनरावर्ती व्याकरण और बिग ओ नोटेशन के लिए|Θ(n3) गैर वाम-पुनरावर्ती व्याकरण के लिए)। उनके टॉप-डाउन पार्सिंग एल्गोरिदम को 'कॉम्पैक्ट प्रतिनिधित्व' और 'स्थानीय अस्पष्टता समूह' द्वारा संभावित घातीय अस्पष्ट पार्स पेड़ के लिए बहुपद स्थान की भी आवश्यकता होती है। उनका कॉम्पैक्ट प्रतिनिधित्व मैंने इसे मसरू के रूप में देखा के नीचे-ऊपर पार्सिंग के कॉम्पैक्ट प्रतिनिधित्व के साथ तुलना करने योग्य है। पीईजी का उपयोग करना, व्याकरण का एक और प्रतिनिधित्व, पैकरैट पार्सर्स एक सुरुचिपूर्ण और शक्तिशाली पार्सिंग एल्गोरिदम प्रदान करते हैं। पार्सिंग अभिव्यक्ति व्याकरण देखें।

उदाहरण
टॉप-डाउन पार्सिंग का उपयोग करने वाले कुछ पार्सर्स में शामिल हैं:
 * निश्चित खंड व्याकरण पारसर्स
 * पुनरावर्ती वंश पार्सर
 * भविष्य कहनेवाला पार्सर
 * अर्ली पार्सर

यह भी देखें

 * बॉटम-अप पार्सिंग
 * पार्सिंग
 * पार्सिंग अभिव्यक्ति व्याकरण

बाहरी संबंध

 * X-SAIGA - eXecutable SpecificAtIons of GrAmmars