एक क्रमपरिवर्तन वाक्यांश मानक (ई) BNF संदर्भ मुक्त व्याकरण परिभाषाओं के लिए एक विस्तार है: एक क्रमचय वाक्यांश शामिल n प्रस्तुतियों (या समतुल्य nonterminals) एक 1 के माध्यम से एक एन । क्रमपरिवर्तन वाक्यांश की स्थिति में, हम इनमें से हर एक को ठीक एक बार देखना चाहेंगे, लेकिन हम इन अप्रतिष्ठानों के क्रम में रुचि नहीं रखते हैं।
उदाहरण के लिए:
S <- X { A, B, C } Y
के बराबर है:
S <- X A B C Y
S <- X A C B Y
S <- X B A C Y
S <- X B C A Y
S <- X C A B Y
S <- X C B A Y
इस अवधारणा को "प्रसंग वाक्यांशों के साथ संदर्भ-मुक्त व्याकरणों का विस्तार" में पेश किया गया लगता है । इसमें यह भी बताया गया है कि इन वाक्यांशों को एक एलएल (1) पार्सर का उपयोग करके रैखिक समय में कैसे पार किया जाए।
कागज "पार्सिंग क्रमचय वाक्यांश" पार्सर कॉम्बिनेटर का उपयोग करके क्रमपरिवर्तन वाक्यांशों को पार्स करने के लिए एक विधि का वर्णन करता है। ये केवल दो पेपर हैं जो मैंने पाया है कि क्रमपरिवर्तन वाक्यांशों और उन्हें पार्स करने के तरीके के बारे में बात करते हैं।
यह देखते हुए कि हम एलएल (1) आधारित पार्सर्स के साथ इन प्रकार के क्रमचय वाक्यांशों को आसानी से पार्स कर सकते हैं, मेरा अनुमान है कि हम एलआर (1) शैली पार्सर्स के साथ भी ऐसा कर सकते हैं। मेरा सवाल इसलिए है:
क्या यथोचित तालिका बनाए रखने के दौरान एलआर (1) मशीनरी का उपयोग करते हुए इनपुट स्ट्रिंग आकार में रैखिक व्याकरण युक्त वाक्यांशों को समय रेखीय में पार्स किया जा सकता है?
क्रमपरिवर्तन वाक्यांश संदर्भ-मुक्त भाषाओं की शक्ति का विस्तार नहीं करते हैं: जैसा कि ऊपर दिए गए मेरे उदाहरण में, बस सभी संभावित क्रमपरिवर्तन कर सकते हैं। हालाँकि, व्याकरण तब विस्फोट होता है क्योंकि परिणामस्वरूप व्याकरण आकार । यह रैखिक समय पार्सिंग की अनुमति देता है, लेकिन व्याकरण का आकार बहुत बड़ा हो जाता है।
हालांकि यह बेहतर है, यह निश्चित रूप से अच्छा नहीं है - 30 वस्तुओं के क्रमचय वाक्यांश होने से व्याकरण अनुपयोगी हो जाएगा। एलआर पार्सिंग का एक हिस्सा अभी भी है जिसे हमने अभी तक नहीं छुआ है, और यह वास्तविक स्टैक-आधारित प्रक्रिया है जिसका उपयोग पार्सिंग के लिए किया जाता है। मैं कल्पना करता हूं कि स्टैक पर काउंटरों को जमा करना समस्या को हल करने में सक्षम हो सकता है, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है।
मैं वर्तमान में एक पार्सर जनरेटर को लागू कर रहा हूं, और समस्या में डोमेन क्रमचय वाक्यांश स्वर्ग से एक उपहार होगा। जैसा कि मैं LR (1) मशीनरी का उपयोग कर रहा हूं, उपरोक्त प्रश्न का पालन किया गया है।