क्या प्रत्येक एलएल (1) व्याकरण भी एलआर (1) है?क्या प्रत्येक एलएल (1) व्याकरण भी एक एलआर (1) है?
उत्तर
हां, चूंकि एलएल और एलआर दोनों डेटा बाएं से दाएं को पार्स करते हैं; और चूंकि एलएल (1) आगे देखता है केवल एक टोकन यह अनिवार्य रूप से एक एलआर (1) होना चाहिए। यह एलआर (के) के लिए भी सच है, जहां के> 1, चूंकि एलआर (के) व्याकरण को एलआर (1) व्याकरण में परिवर्तित किया जा सकता है।
एलआर और एलएल व्याकरण के बीच का अंतर आता है कि एलआर सही दाढ़ी पैदा करता है, जहां एलएल बाएं सबसे ज्यादा व्युत्पन्न पैदा करता है। तो इसका मतलब यह है कि एक एलआर पार्सर वास्तव में एलएल व्याकरण की तुलना में अधिक सेट को पार्स कर सकता है क्योंकि यह पत्तियों से बनता है।
A -> "(" A ")" | "(" ")"
फिर डालूँगा (1) स्ट्रिंग (())
पार्स होगा:
कहना इस प्रकार हम प्रस्तुतियों है की सुविधा देता है
(()) -> A
-> "(" A ")"
-> "(" "(" ")" ")"
कहाँ के रूप में एलआर (1) के रूप में पार्स जाएगा इस प्रकार है:
Input Stack Action
(()) 0
()) 0 '('
)) 0 '(' '('
) 0 '(' '(' ')' Reduce using A -> "(" ")"
) 0 '(' A
- 0 '(' A ')' Reduce using A -> "(" A ")"
- 0 A Accept
अधिक जानकारी के लिए देखें: http://en.wikipedia.org/wiki/LL_parsing
लेकिन एलएल (1) द्वारा पार्स द्वारा प्रयुक्त अनुक्रम (प्रोडक्शंस) हमेशा एलआर (1) द्वारा उपयोग किए गए विपरीत अनुक्रम (प्रोडक्शंस) में नहीं होता है। पार्स करने के लिए। भले ही पूर्व शीर्ष पर है और बाद में पार्सर नीचे है इसलिए सभी एलएल (1) के लिए एलआर (1) होने का आपका कारण पर्याप्त प्रतीत नहीं होता है। – siddharth
कुछ एलआर होने का मतलब यह नहीं है कि पार्स पेड़ उलटा एलएल पार्स पेड़ के समान होता है, और इस प्रकार पार्सर विपरीत क्रम में प्रस्तुतियों का उपयोग नहीं करेगा। इसका मतलब यह है कि एक एलआर पार्सर एक ही व्याकरण के तारों के उसी सेट को सही तरीके से पार्स कर सकता है। – Mike
क्या यह तथ्य विरोधाभास करता है? http://cs.stackexchange.com/questions/60763/does-my-grammar-contradict-ll-⊆-lr1/60764#60764 – Pranav
मुझे लगता है कि मेरे पास कॉलेज में एक दिन कई चंद्रमा पहले थे;) – foreyez