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